Automated circuit generation

ABSTRACT

Automated circuit generation is disclosed. In some embodiments, parameters are received and a circuit schematic is generated automatically by software. In some embodiment, parameters are received and a circuit layout is generated automatically by software. In some embodiments, a design interface may be used to create a behavioral model of a circuit. Software may generate a circuit specification to generate a schematic. In various embodiments, circuit component values may be determined and generated. Certain embodiments pertain to automating layout of circuits. Software may receive parameters for functional circuit components and generate a circuit schematic and/or a layout. The present techniques are particularly useful for automatically generating analog circuits.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims the benefit of priority to U.S. ProvisionalPatent Application No. 62/854,848 filed May 30, 2019, the contents ofwhich are hereby incorporated herein by reference.

BACKGROUND

The present disclosure pertains to electronic circuits, and inparticular, to techniques for automatically generating circuitschematics and layouts.

Electronic circuits have become ubiquitous in modern society. Fromsmartphones, personal computers, televisions, and a host of otherconsumer electronic devices to industrial equipment, scientificinstruments, communications systems, and almost every aspect of theInternet, electronic circuits, typically in the form of integratedcircuits (or “chips”), have had a dramatic impact on human existence.

However, developing electronic circuits can be time consuming andcostly. Typically, teams of highly trained electrical engineers and ahost of the electronic circuit professionals spend long periods of timedesigning circuit schematics and laying out the circuitry to form a chipwith the desired functionality. Circuit schematics may include eachtransistor in the circuit together with connections between thetransistors. The schematics can be used to simulate how the electroniccircuit will operate to ensure proper functionality. Next, thetransistors are laid out as geometric shapes. The layout (sometimesreferred to as the “mask design”) is a representation of an integratedcircuit in terms of planar geometric shapes which may, for example,correspond to the physical aspects of the circuit to be created insilicon (e.g., on a wafer which is then cut into individual chips). Forexample, the layout may represent patterns of metal, oxide, orsemiconductor layers that make up the physical components of theintegrated circuit.

Designing circuit schematics and creating layouts for an entireelectronic circuit can be a tedious and time-consuming process. Inparticular, for analog circuits, transistor level schematics aretypically prepared by very experienced and highly trained analog circuitdesign professionals. Designing schematics from scratch can take severalmonths depending on the complexity of the circuitry. Once the design iscreated, analog circuit design professionals typically work with layoutprofessionals to create the layout. The layout process can also takeweeks or even months.

Discovering techniques for generating schematics and layoutsautomatically may reduce chip development cycle times, streamline thedevelopment process, and provide a wide range of other potentialadvantages.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates a system for automated circuit generation ofaccording to one embodiment.

FIG. 2 illustrates a method for automated circuit generation accordingto one embodiment.

FIGS. 3A-D illustrate examples of automated circuit schematic generationaccording to various embodiments.

FIGS. 4A-D illustrate examples of automated circuit schematic generationaccording to further embodiments.

FIG. 5 illustrates example functional blocks of a generator according toan embodiment.

FIG. 6A illustrates another example block diagram of an automatedcircuit generator according to another embodiment.

FIG. 6B illustrates an example process of automatically generating acircuit according to an embodiment.

FIGS. 7A-B illustrate an example of mapping pins according to oneembodiment.

FIG. 8 illustrates a system for automated circuit generation accordingto another embodiment.

FIG. 9 illustrates a method for automated circuit generation ofaccording to one embodiment.

FIGS. 10A-D illustrate examples of automated circuit layout generationaccording to various embodiments.

FIGS. 11A-D illustrate examples of automated circuit layout generationaccording to further embodiments.

FIG. 12A illustrates an example of generating a circuit layout accordingto one embodiment.

FIG. 12B illustrates another example of generating a circuit layoutaccording to one embodiment.

FIG. 13A illustrates an example circuit layout generated from differentparameters and placement instructions according to an embodiment.

FIG. 13B illustrates another example combination of parameter values andplacement instructions according to another embodiment.

FIG. 14 illustrates another example of generating a circuit layout usinga rotation layout placement instruction according to an embodiment.

FIG. 15 illustrates another example of generating circuit layouts usinglayout placement instructions according to an embodiment.

FIG. 16 illustrates another example design interface according to anembodiment.

FIG. 17 illustrates an example design and automated circuit generationprocess according to another embodiment.

FIG. 18 illustrates an example design and automated circuit generationsystem according to another embodiment.

FIG. 19 illustrates symbols for different functional circuit componentsaccording to an embodiment.

FIG. 20A illustrates an example generator software system 2001 accordingto one embodiment.

FIG. 20B illustrates an example method of generating a circuitspecification according to an embodiment.

FIG. 20C illustrates a method of generating a circuit specificationaccording to another embodiment.

FIG. 21A illustrates a method of generating circuit components across arange of values according to one embodiment.

FIG. 21B illustrates a method of generating circuit components across arange of values according to another embodiment.

FIG. 21C illustrates a method of generating circuit components across arange of values according to yet another embodiment.

FIG. 22 illustrates a computer-implemented system for automaticallygenerating resistors according to an embodiment.

FIG. 23 illustrates a method of generating a resistor according to anembodiment.

FIG. 24 illustrates a method of generating a resistor according toanother embodiment.

FIG. 25A illustrates a method of generating a resistor according to yetanother embodiment.

FIG. 25B illustrates a method of generating a resistor according to yetanother embodiment.

FIG. 25C illustrates a method of generating a resistor according to yetanother embodiment.

FIG. 26 illustrates an example resistor schematic and layout accordingto an embodiment.

FIG. 27A illustrates example layouts generated for two resistor valuesused with two different circuits according to an embodiment.

FIG. 27B illustrates two resistor values used with the same circuitaccording to an embodiment.

FIG. 28 illustrates example layouts generated for a resistor value fordifferent sub-circuit configurations according to an embodiment.

FIG. 29 illustrates an example layout of resistor segments according toan embodiment.

FIG. 30 illustrates another example layout of resistor segmentsaccording to an embodiment.

FIG. 31 illustrates passing resistor attributes according to anembodiment.

FIG. 32 illustrates passing resistor attributes to a schematic accordingto another embodiment.

FIG. 33 illustrates generating a resistor specified in a user interfaceaccording to an embodiment.

FIG. 34 illustrates an example layout of a resistor specified in a userinterface according to an embodiment.

FIG. 35 illustrates generating a resistor based on circuit parametersspecified in a user interface according to an embodiment.

FIG. 36 illustrates an example layout of a resistor determined fromparameters according to an embodiment.

FIGS. 37A-C illustrates generating resistor dividers according to anembodiment.

FIG. 38A illustrates a method of generating a resistor divider includingsub-circuits according to another embodiment.

FIG. 38B illustrates various embodiments of resistor dividers withdifferent configurations of switches.

FIG. 39 illustrates a computer-implemented system for automaticallygenerating capacitors according to an embodiment.

FIG. 40A illustrates a method of generating capacitors according to anembodiment.

FIG. 40B illustrates one example technique for determining capacitordimensions according to an embodiment.

FIGS. 41A-C illustrate an example capacitor schematic generationaccording to an embodiment.

FIG. 42 illustrates example capacitor layouts according to variousembodiments.

FIG. 43 illustrates generating a capacitor specified in a user interfaceaccording to an embodiment.

FIG. 44 further illustrates an example layout of a capacitor determinedfrom parameters according to an embodiment.

FIG. 45 illustrates automated generation of transistors according to anembodiment.

FIG. 46 illustrates a flow chart for automatically generating atransistor according to an embodiment.

FIGS. 47A-F illustrate example transistors generated by differentparameters according to various embodiments.

FIG. 48A illustrates another example transistor generated from anotherset of parameter values according to an embodiment.

FIG. 48B illustrates another example transistor generated from anotherset of parameter values according to yet another embodiment.

FIG. 49A illustrates an example method of generating a transistoraccording to another embodiment.

FIG. 49B illustrates an example method for converting specified valuesof on resistance (Ron) into gate widths according to an embodiment.

FIG. 50 illustrates generating a transistor with a replica device 5001according to an embodiment.

FIG. 51 illustrates generating a transistor with a Kelvin connectionaccording to an embodiment.

FIG. 52A illustrates an example of automatically generating layouts of atransistor according to an embodiment.

FIG. 52B illustrates that an aspect ratio of a transistor layout maychange as the number of fingers increases.

FIGS. 53A-B illustrate arrays of transistor device cell layout instancesconfigured to form a transistor according to an embodiment.

FIG. 54 illustrates generating a layout for a transistor according toone embodiment.

FIG. 55 illustrates generating a layout for a transistor according toone embodiment.

FIG. 56A illustrates automatic placement of layout instances to form atransistor according to an embodiment.

FIG. 56B illustrates vertical strips of metal layer 3 according to anembodiment.

FIG. 57 illustrates generating a layout according to an embodiment.

FIG. 58 illustrates an example system including an automated layoutgenerator according to an embodiment.

FIG. 59 illustrates converting circuit schematics to layout instancesand generating a layout according to an embodiment.

FIG. 60 illustrates a layout script according to an embodiment.

FIG. 61 illustrates an example placement operation of a layout placementinstruction according to an embodiment.

FIG. 62 illustrates further examples of generating a layout according tofurther embodiments.

FIG. 63A illustrates example types of steps that may be used in variouslayout placement instructions according to various embodiments.

FIG. 63B illustrates another parameter used in some layout placementinstructions according to an embodiment.

FIG. 63C illustrates another parameter used in some layout placementinstructions according to an embodiment.

FIG. 63C illustrates another parameter used in some layout placementinstructions according to an embodiment.

FIG. 64 illustrates another parameter used in some layout placementinstructions according to various embodiments.

FIG. 65 illustrates the process for a conditional layout placementinstruction according to an embodiment.

FIG. 66 illustrates another layout placement instruction forincorporating a transistor into a layout according to an embodiment.

FIG. 67 illustrates example computer system hardware according tocertain embodiments.

FIG. 68 illustrates various computer system configurations that may beused in certain embodiments.

FIG. 69 illustrates a process of making a circuit according to anembodiment.

DETAILED DESCRIPTION

Described herein are techniques for automated circuit generation. Someor all of the techniques described herein may be used to make anintegrated circuit, for example. In the following description, forpurposes of explanation, numerous examples and specific details are setforth in order to provide a thorough understanding of the presentdisclosure. It will be evident, however, to one skilled in the art thatthe present disclosure as expressed in the claims may include some orall of the features in these examples, alone or in combination withother features described below, and may further include modificationsand equivalents of the features and concepts described herein.

In various embodiments and combinations, the following disclosuredescribes techniques for automatically generating electronic circuitsusing software. Some embodiments described below may generate circuitschematics or circuit layouts, or both, in response to parameters.Parameters may specify a variety of circuit properties, and a softwaresystem may generate schematics or layouts, or both, for a wide range ofcircuits based on the parameters, for example. In some embodimentsdescribed herein, a design interface may allow a user to define acircuit to be generated by selecting functional circuit components andspecifying parameters. In some embodiments, the design interface may bea high level representation of the circuits, such as a behavioral levelrepresentation, for example, which may require less knowledge of, orexperience with, circuit design techniques than would be required todefine a transistor level schematic, for example. Thus, in some exampleembodiments, a user with far less or very little circuit designknowledge or experience may define circuits, and computer software maygenerate schematics or layouts, or both, in response to the less skilledor less experienced user's input. Additionally, circuit schematic designand layout development cycle times, which can be long using traditionalapproaches, can be dramatically reduced using an automated circuitdesign techniques described herein. The present techniques areparticularly advantageous in the field of analog circuit design. Avariety of innovations are disclosed below for use in variousembodiments of the present disclosure. The innovations disclosed belowmay be implemented either alone or in various combinations with otherinnovations described here according to various embodiments and used aspart of a process for making an integrated circuit, for example.

Parameterized Circuit Schematic Generation

FIG. 1 illustrates a system for automated circuit generation accordingto one embodiment. Features and advantages of the present disclosureinclude a system capable of automatically generating circuit schematicsbased on input parameters, for example, where different parameter valuesmay result in different circuit schematics being generatedautomatically. As illustrated in FIG. 1, a generator software system 102may receive parameters 104 and produce a circuit schematic 103.Generator software system 102 may execute on at least one computersystem, for example, and comprise computer code, which when executed byone or more computers causes the computer(s) to perform operations forperforming the techniques described herein. The parameters may bereceived in generator 102 in a variety of data formats as informationspecifying circuitry to be generated, for example.

Parameters 104 may comprise a plurality of circuit specificationparameters corresponding to at least one functional circuit component101, for example. Circuit specification parameters may specifyproperties of a circuit to be generated, for example. For instance,circuit specification parameters in some example embodiments may bevariables having particular values. As illustrated in more detail below,circuit specification parameters may specify electrical properties ofthe circuit to be generated (e.g., voltages or currents) or may specifyphysical properties of circuits to be generated (e.g., whether an inputuses an N-type or P-type transistor or the physical structure of acapacitor or resistor). In some embodiments, circuit specificationparameters may correspond to particular functional circuit components,such as functional circuit component 101. In various embodiments, thefunctional circuit components may be analog functional circuitcomponents, for example. For example, one set of circuit specificationparameters may correspond to one functional circuit component (e.g., acomparator) and another set of parameters may correspond to a differentfunctional circuit component (e.g., a delay circuit or oscillator).Accordingly, a comparator may have a different set of parameters than anoscillator, although in some embodiments, distinct sets of parametersfor different functional circuit components may have one or more of thesame individual parameters (e.g., parameters specifying an input stagetype or a supply voltage value). Parameters 104 may be implemented usinga variety of techniques. In some embodiments, circuit specificationparameters may be received as text, for example, specifying variablenames and values. In other embodiments, circuit specification parametersmay be implemented as code (e.g., digital code values or a wide range ofother coding techniques) for specifying properties of the circuit to begenerated to embody functional circuit component 101, for example. It isto be understood that a variety of coding techniques could be used toembody circuit specification parameters to specify properties of thecircuit to be generated.

Parameters 104 are received by generator 102. Generator 102 may select(i.e., determine or otherwise identify) a plurality of sub-circuitschematics 110-112 based on the circuit specification parameters. Forexample, one set of values (or a code) for the received circuitspecification parameters may result in selection of sub-circuitschematic 110 and sub-circuit schematic 111. Another set of values (oranother encoding) for the received circuit specification parameters mayresult in selection of sub-circuit schematic 110, sub-circuit schematic111, and sub-circuit schematic 112, for example. Once the appropriatesub-circuit schematics are selected, the identified sub-circuitsschematic may be combined to form circuit schematic 103. Accordingly,circuit schematic 103 implements the functional circuit component 101having the properties specified by parameters 104.

While the following disclosure describes combining sub-circuitschematics, it is to be understood that other sub-circuit models may beused in other embodiments. Schematics typically refer to modelsdescribing connections of components used in a circuit (e.g.,transistors, resistors, capacitors, inductors, and the like). Theembodiments described herein may not be limited to the particularmodeling techniques used to represent the sub-circuits and circuits, forexample.

Embodiments of the present disclosure may be particularly advantageousto generating analog circuit schematics. Analog circuits are differentfrom digital circuits in that digital circuits process binary voltages(representing zeros and ones) using simple logic circuits withtransistors that are substantially either fully turned on or fullyturned off, whereas analog circuits typically involve circuitry withtransistors that are operable across some range between fully turned onand fully turned off (e.g., across a linear range). Analog circuits maybe dependent on particular voltages and currents in the circuit toperform a wide variety of operations where components (e.g., capacitors,transistors, resistors, inductors) in the system operate across rangesof voltage or current, for example. A subset of analog circuits aremixed signal circuits. Mixed signal circuits are analog circuits thatinclude some digital circuitry that is integrated together with andworks together with analog circuitry. Mixed signal circuits are to bedistinguished from digital circuits that are not integrated with and/orperform functions substantially independent of analog circuitry, forexample. The differences between analog circuit design (e.g.,analog/mixed signal circuit design) and digital circuit design are knownby those skilled in the art.

Embodiments of the present disclosure may be used to automaticallygenerate analog circuit schematics and/or layouts, for example, based oncircuit specification parameters. As mentioned above, the circuitspecifications parameters may correspond to one or more functionalanalog circuit components, such as a comparator, oscillator, delay, etc.. . . . The circuit specification parameters may specify properties ofthe analog circuit to be generated, such as a comparator with a P-typeor N-type input, for example. The circuit specification parameters maybe used, in some example applications, to select predefined analogsub-circuit schematics corresponding to a particular functional analogcircuit component. For example, as illustrated in a more detailedexample below, generator 102 may select a predefined P-type comparatorsub-circuit schematic, a first predefined hysteresis sub-circuitschematic, and a predefined deglitch sub-circuit schematic based on oneset of parameters to form a circuit schematic for a comparatorfunctional circuit component having one set of properties, and generator102 may select a predefined N-type comparator sub-circuit schematic andanother predefined hysteresis circuit schematic using another set ofparameters to form a circuit schematic for a comparator functionalcircuit component having another set of properties, for example.

FIG. 2 illustrates a method for automated circuit generation accordingto one embodiment. The method may be performed by software executing onone or more computers, for example. At 201, a plurality of circuitspecification parameters are received that correspond to at least onefunctional circuit component. The circuit specification parameters maybe represented in a variety of ways, such as variables and values intext or as code, for example. As mentioned above, received parametersmay include one or more sets of parameters associated with differentfunctional analog circuit components (e.g., one set of parameterscorresponding to a first functional analog circuit component and anotherset of parameters corresponding to a second functional analog circuitcomponent). At 202, particular sub-circuit schematics are selected basedon the circuit specification parameters. In one embodiment, differentfunctional circuit components may have different sets of predefinedsub-circuit schematics. Selection may include selecting a subset of thepredefined sub-circuit schematics corresponding to the functionalcircuit component based on the circuit specification parameters. Forexample, a comparator may have an N-type comparator sub-circuitschematic, a P-type comparator sub-circuit schematic, and various othersub-circuit schematics in the set of schematics corresponding to thecomparator functional circuit component. The P-type sub-circuitschematic may be selected based on one or more parameters having aparticular value, and the N-type sub-circuit schematic may be selectedbased on the one or more parameters having different values, forexample. At 203, the software system combines the selected sub-circuitschematics to form a circuit schematic for the functional circuitcomponent. The sub-circuit schematics may be in the form of functionalcomponent level circuit blocks (or designs) having a variety of inputand output terminals (or pins) in the schematic. Accordingly, combiningmay include coupling pins together between the sub-circuit schematicsand/or coupling pins of the sub-circuit schematics to other pins ofother circuit schematics, for example. An example of coupling pinsbetween sub-circuit schematics is illustrated in more detail below.

FIGS. 3A-D illustrate examples of automated circuit schematic generationaccording to various embodiments. As illustrated in various examplesbelow, particular values for a set of circuit specification parametersmay correspond to a specific instance of a particular functional circuitcomponent (e.g., a comparator with particular properties to begenerated). There may be many of the same functional circuit componentswith different circuit specification parameters and correspondingdifferent circuit schematics formed from different selectedsub-circuits, for example. In certain embodiments, different values forone set of circuit specification parameters may generate differentanalog circuit schematics having different electrical properties for onecorresponding functional circuit component. For example, parameters 302corresponding to functional circuit component 303 may be coded withdifferent values. In this example, a set of N parameters (where N is aninteger) is illustrated as variables a1, a2, a3, . . . aN having a firstset of values [a1=x1, a2=x2, a3=x3, . . . , aN=xN]. Generator software301 receives parameters 302 having the first set of values and selects asubset of sub-circuit schematics 310-315. The selected sub-circuitschematics are combined to form a circuit schematic for the functionalcircuit component 303 according to the received parameters. In thisexample, the first set of parameter values result in sub-circuitschematics 310-312 being selected and combined to form circuit schematic303A.

FIG. 3B illustrates parameters 302 having a second set of values [a1=x1,a2=x2, a3=y3, . . . , aN=xN]. Here, parameter a3 has changed its valuefrom x3 to y3. Therefore, the sub-circuit schematics selected changes.In this example, when a3=y3 sub-circuit schematic 312 is no longerselected and included in the circuit schematic 303B with sub-circuitschematics 310 and 311.

FIG. 3C illustrates parameters 302 having a third set of values [a1=y1,a2=x2, a3=x3, . . . , aN=xN]. Here, parameter a1 has changed its valuefrom x1 to y1 and parameter a3=x3. Therefore, the sub-circuit schematicsselected changes again. In this example, when a1=y1 sub-circuitschematic 310 is no longer selected. Rather, sub-circuit schematic 313is selected and included in the circuit schematic 303C with sub-circuitschematics 311 and 312.

FIG. 3D illustrates parameters 302 having a fourth set of values [a1=y1,a2=y2, a3=x3, . . . , aN=xN]. Here, parameter a1 and a2 having values ofy1 and y2, respectively, results in sub-circuit schematic 314 beingselected and included in the circuit schematic 303D with sub-circuitschematics 311 and 312.

Features and advantages of some embodiments of the present disclosuremay include receiving circuit specification parameters corresponding toa plurality of functional circuit components and automaticallygenerating circuit schematics implementing each functional circuitcomponent based on the parameters. FIGS. 4A-D illustrate differentparameter sets (or encodings) generating different circuit schematicsfor different functional circuit components according to an embodiment.Referring to FIG. 4A, in this example, a generator software system 401receives parameters 450 corresponding to a plurality of functionalcircuit components 402-405 (components C1, C2, C3, C4, and so on up toCN, where N is an integer corresponding to the number of differentfunctional circuit components). C1-CN may be a comparator, anoscillator, a delay circuit, a current generator, a voltage reference,or a wide variety of other analog functional circuit components used inanalog circuits, for example. In this example, generator 401 may receiveN sets of circuit specification parameters, where each differentfunctional circuit component has a corresponding set of circuitspecification parameters. In particular, a first set of parameters 451,C1_Params, correspond to component C1 402, a second set of parameters452, C2_Params, correspond to component C2 403, a third set ofparameters 453, C3_Params, correspond to component C3 404, and so on upto a final set of parameters 454, CN_Params, corresponding to componentCN 405, where N is an integer representing a number of functionalcircuit components for which corresponding circuit schematics are beinggenerated, for example. Each set of parameters 451-454 may specifyproperties of the circuit schematic to be produced by having differentparameter values. In this example, parameters 451 have a first set ofvalues, which are represented here as “C1_Params_1”. Similarly,parameters 452 have a first set of values “C2_Params_1”, parameters 453have a first set of values “C3_Params_1”, and so on for parameters 454having values “CN_Params_1”.

FIGS. 4A-D show examples illustrating that different circuitspecification parameters 450 for different corresponding functionalcircuit components may have different corresponding sets of predefinedsub-circuit schematics. For example, predefined analog sub-circuits maybe stored in a library 460 shown in FIG. 4A. In this example, there aremultiple sets of sub-circuits 410, 420, 430, and 440 corresponding todifferent functional circuit components 402, 403, 404, and 405,respectively. Accordingly, C1_Params 451 corresponding to functionalcircuit component 402 (C1) may be used to select sub-circuit schematicsfrom C1 sub-circuit set (“C1_SC_Set”) 410 comprising analog sub-circuitschematics 411-416, for example. Similarly, C2_Params 452 correspondingto functional circuit component 403 (C2) may be used to selectsub-circuit schematics from C2 sub-circuit schematic set (“C2_SC_Set”)420 comprising analog sub-circuit schematics 421-427, for example.Likewise, C3_Params 453 corresponding to functional circuit component404 (C3) may be used to select sub-circuit schematics from C3sub-circuit schematic set (“C3_SC_Set”) 430 and so on up to CN_Params454 corresponding to functional circuit component 405 (CN), which may beused to select sub-circuit schematics from CN sub-circuit schematic set(“CN_SC_Set”) 440 (sub-circuits not shown).

Parameters 451-454 may have different values that result in differentcombinations of corresponding sub-circuits. In this example, each set ofparameters 451-454 receives a first set of parameter values (e.g.,particular values are designated here with an “_1”, “_2”, etc. . . . ).For instance, a first set of values for circuit specification parameter451 is designated C1_Params_1, a first set of values for circuitspecification parameter 452 is designated C2_Params_1, and so on. Inthis example, generator 401 receives parameter values C1_Params_1 andcombines sub-circuit schematics C1_SC1 411, C1_SC2 412, and C1_SC3 413from C1_SC_Set 410 to produce an analog circuit schematic 406Acorresponding to functional circuit component C1 402. Similarly,generator 401 receives parameter values C2_Params_1 and combinessub-circuit schematics C2_SC1 421, C2_SC2 422, C2_SC3 423, and C2_SC4424 from C2_SC_Set 420 to produce an analog circuit schematic 407Acorresponding to functional circuit component C2 403. Likewise,generator 401 receives parameter values C3_Params_1 and combinessub-circuit schematics (not shown) from C3_SC_Set 430 to produce ananalog circuit schematic 408A corresponding to functional circuitcomponent C3 404. Analog circuit schematic 408A comprises a first subsetof sub-circuit schematics (C3_SC SubsetA) 431A from C3_SC_Set 430.Finally, generator 401 receives parameter values CN_Params_1 andcombines sub-circuit schematics (not shown) from CN_SC_Set 440 toproduce an analog circuit schematic 409A corresponding to functionalcircuit component CN 405. Analog circuit schematic 409A comprises afirst subset of sub-circuit schematics (CN_SC SubsetB) 441A fromCN_SC_Set 440.

FIG. 4B illustrates generating another circuit using another set ofparameters according to an embodiment. In this example, the set ofparameters 451-454 receive different sets of parameter values. Forinstance, a new set of values for circuit specification parameters 451is designated C1_Params_2, a new set of values for circuit specificationparameters 452 is designated C2_Params_2, and so on. In this example,generator 401 receives parameter values C1_Params_2 and selects andcombines sub-circuits C1_SC4 414, C1_SC2 412, and C1_SC3 413 fromC1_SC_Set 410 to produce an analog circuit schematic 406B correspondingto functional circuit component C1 402. Similarly, generator 401receives parameter values C2_Params_2 and selects and combinessub-circuits C2_SC5 425, C2_SC6 426, C2_SC3 423, and C2_SC4 424 fromC2_SC_Set 420 to produce an analog circuit schematic 407B correspondingto functional circuit component C2 403. Likewise, generator 401 receivesparameter values C3_Params_2 and selects and combines sub-circuits (notshown) from C3_SC_Set 430 to produce an analog circuit schematic 408Bcorresponding to functional circuit component C3 404. Analog circuitschematic 408B comprises a second subset of sub-circuit schematics(C3_SC SubsetA′) 431B from C3_SC_Set 430. Finally, generator 401receives parameter values CN_Params_2 and selects and combinessub-circuits (not shown) from CN_SC_Set 440 to produce an analog circuitschematic 409B corresponding to functional circuit component CN 405.Analog circuit schematic 409B comprises a second subset of sub-circuitschematics (CN_SC SubsetB′) 441B from CN_SC_Set 440.

FIG. 4C illustrates generating yet another circuit using yet another setof parameters according to an embodiment. In this example, each set ofparameters 451-454 receives a third set of parameter values. Forinstance, a new set of values for circuit specification parameters 451is designated C1_Params_3, a new set of values for circuit specificationparameters 452 is designated C2_Params_3, and so on. In this example,generator 401 receives parameter values C1_Params_3 and selects andcombines sub-circuits C1_SC4 414 and C1_SC2 412 from C1_SC_Set 410 toproduce an analog circuit schematic 406C corresponding to functionalcircuit component C1 402. Similarly, generator 401 receives parametervalues C2_Params_3 and selects and combines sub-circuits C2_SC5 425,C2_SC6 426, C2_SC3 423, and C2_SC7 427 from C2_SC_Set 420 to produce ananalog circuit schematic 407C corresponding to functional circuitcomponent C2 403. Likewise, generator 401 receives parameter valuesC3_Params_3 and selects and combines sub-circuits (not shown) fromC3_SC_Set 430 to produce an analog circuit schematic 408C correspondingto functional circuit component C3 404. Analog circuit schematic 408Ccomprises a third subset of sub-circuit schematics (C3_SC SubsetA″) 431Cfrom C3_SC_Set 430. Finally, generator 401 receives parameter valuesCN_Params_3 and selects and combines sub-circuits (not shown) fromCN_SC_Set 440 to produce an analog circuit schematic 409C correspondingto functional circuit component CN 405. Analog circuit schematic 409Ccomprises a third subset of sub-circuit schematics (CN_SC SubsetB″) 441Cfrom CN_SC_Set 440.

FIG. 4D illustrates an embodiment where different sub-circuit sets fordifferent functional circuit components may include the samesub-circuit. For example, in some embodiments, different functionalcircuit components may have a corresponding unique set of predefinedsub-circuit schematics. Referring to FIG. 4A, sub-circuit set C1_SC_Set410 may be a different set of sub-circuit schematics than C2_SC_Set 420or C3_SC_Set 430. In particular, the sub-circuits combined to formdifferent comparators may be different than the sub-circuits combined toform different oscillators or different delay circuits, for example.Accordingly, each functional circuit component may have correspondingunique sets of sub-circuit schematics. However, in various embodiments,even though the sets may be unique, one or more sub-circuit schematicsin some sets may be shared. For example, a set of sub-circuit schematicsfor a comparator may access a resistor divider sub-circuit, and theresistor divider sub-circuit may also be associated with a set ofsub-circuits for an oscillator, for example. Accordingly, a unique setmay include one or more unique predefined analog sub-circuit schematicsonly used for the corresponding functional circuit component, oralternatively, a unique set may include one or more predefined analogsub-circuit schematics used for a plurality of corresponding functionalcircuit components. This is illustrated in FIG. 4D where sub-circuitschematic C1-2 SC 417 is included in sets C1_SC_Set 410 and C2_SC_Set420. Accordingly, parameters 451 and 452 for components C1 and C2,respectively, may generate schematics 406D and 407D that both includeC1-2 SC 417, for example.

FIG. 5 illustrates example functional blocks of a generator according toan embodiment. As described above, in certain example embodimentsgenerator 501 may receive circuit specification parameters correspondingto different types of functional analog circuit components (e.g., C1,C2, C3, . . . , CN). The parameters may specify the properties of thecircuit to be generated using predefined analog sub-circuit schematics,for example. Accordingly, when parameters are received by generator 501,the parameters may be analyzed by determine functionality block 502,which determines which functional component the parameters correspondto. Block 502 may receive a set of parameters, determine the appropriatecorresponding functional circuit component (here, C1, C2, C3, . . . ,CN; e.g., a comparator, oscillator, delay, etc. . . . ), and access oneof a plurality of different rule sets 510-511 to further process theparameters. Block 502 and the rule set blocks 510-511 as described andin further examples below may be implemented in software code, forexample, or as combinations of software code and imported data (e.g.,data about the parameters, different rules, sub-circuits, combinationsof circuits, etc.), for example.

In some embodiments, a plurality of circuit schematics, such as one ormore of schematics 406A-D, 407A-D, 408A-D, and 409A-D, for differentfunctional components may be coupled together in various combinationsinto a schematic for a circuit comprising a plurality of parameterizedinstances of functional circuit components, for example. One circuitschematic may comprise a schematic for functional circuit component C1402 based on one set of parameters (e.g., circuit schematic 406D), aschematic for functional circuit component C2 403 based on one set ofparameters (e.g., circuit schematic 407C), a schematic for functionalcircuit component C3 404 based on one set of parameters (e.g., circuitschematic 408D), and a schematic for functional circuit component CN 405based on one set of parameters (e.g., circuit schematic 409B).Alternatively, combinations of parameters and functional circuitcomponents may generate a circuit schematic comprising a schematic forfunctional circuit component C1 402 based on another set of parameters(e.g., circuit schematic 406B), no schematic for functional circuitcomponent C2 403 (e.g., C2 is not included), a schematic for functionalcircuit component C3 404 based on another set of parameters (e.g.,circuit schematic 408C), and no schematic for functional circuitcomponent CN 405 (e.g., CN also not included). Any combination ofparameters for different instantiations of functional circuit componentsmay be used to automatically generate a schematic with variouscombinations of one or more of the same or different functional circuitcomponents, for example. In some embodiments, the schematic may be usedto simulate an entire chip of functional circuit components coupledtogether. The schematics may optionally be processed by an electronicdesign automation (EDA) software system, such as a transistor schematicand layout editing tool (e.g., Cadence®, Mentor Graphics®, or Silvaco®)to produce a layout, perform layout versus schematic (“LVS”) and/ordesign rule checks (“DRC”), and may be sent to a manufacturing facility(e.g., a semiconductor fabrication or “FAB”) to produce an integratedcircuit (e.g., a chip) having the desired properties, for example.Typically, designing schematics for an analog integrated circuit cantake lot of time and effort by analog circuit design professionals.Advantageously, systems and methods using the techniques describedherein may generate a schematic for an electronic circuit (e.g., acomplete chip) very quickly and in substantially less time that would berequired if designing each circuit using traditional techniques.

Generator 501 may analyze the parameters to determine a correspondingrule set that should be used. For example, if the parameters include oneor more particular variables or values, then one rule set may beappropriate, but if the parameters include one or more other particularvariables or values, then another rule set may be appropriate. In someembodiments, the parameters may include information specifying afunctional circuit component. For example, the parameters received bygenerator 501 may include text specifying a functional circuit component(e.g., “comparator,” “oscillator,” or “voltage reference”) or one ormore identifiers (IDs) such as one or more codes for uniquelydetermining the rule set that should be used for the corresponding thefunctional circuit component, for example. The existence of particularparameters in a parameter set may, in other embodiments, be used todetermine which functional circuit components the parameters are for andwhich set of sub-circuits are to be selected from, for example.

In this example, there are N different rule set blocks 510-511corresponding to N different functional circuit component types (where Nis an integer, e.g., 3, 4, 5, etc. . . . ). Parameters corresponding todifferent functional circuit components may have corresponding rulesets. For example, parameters 451 for C1 may be processed using a firstrule set, parameters for C2 may be processed using a second rule set,parameters for C3 may be processed using a third rule set, and so on upto parameters for CN, which may be processed using an Nth rule set. Asan example, the different rule sets may be configured to analyze theparameter values, select particular sub-circuits from the appropriatesub-circuit sets (e.g., for each functional circuit component), andperform some or all of the processing for combining the sub-circuits toform a circuit schematic for a corresponding functional circuitcomponent, for example. Referring again to FIG. 5, C1_Params_1 invokeone rule set for selecting sub-circuits 411, 412, and 413 from set 410,which when combined form circuit schematic 406A. Similarly, C2_Params_1invoke a second rule set for selecting sub-circuits 421, 422, 423, and424 from set 420, which when combined form circuit schematic 407A.Likewise, C3_Params_1 invoke a third rule set for selecting sub-circuitsin subsetA 431A from set 430, which when combined form circuit schematic408A. Finally, CN_Params_1 invoke a yet another rule set for selectingsub-circuits in subsetB 441A from set 440, which when combined formcircuit schematic 409A.

In one example embodiment of generator 501, a circuit specification isgenerated and provided to an EDA tool. The circuit specification mayspecify sub-circuit schematics and pin connections to form a combinedcircuit, for example. For example, a circuit specification may describethe sub-circuit schematics used to form a circuit as well as theconnections between various sub-circuit schematic nodes, for example. Insome example embodiments, the circuit specification may includeidentifiers (e.g., cell names or instance names) for particularsub-circuit schematics to be included in the circuit. The circuitspecification may further include descriptions of how pins of thesub-circuit schematics are connected (e.g., a pin map described below).As described in more detail below, one example circuit specification isa netlist, such as Verilog.v, for example. The EDA tool may receive thecircuit specification, retrieve the specified sub-circuit schematicsbased on the circuit specification, and generate a transistor levelcircuit schematic comprising selected sub-circuit schematics.

FIG. 6A illustrates another example block diagram of an automatedcircuit generator according to another embodiment. In this example,generator 609 includes program code to determine functionality 609,apply rules 612-613, retrieve sub-circuit schematics 614, and connectsub-circuit schematics 615. For example, when the process starts,determine functionality block 610 may, for example, evaluate one or morereceived parameter sets and determine which rule set to apply (e.g., acomparator rule set, an oscillator rule set, or a voltage reference ruleset). Generator 609 may invoke one of the appropriate rule sets 612-613.An example rule set is illustrated at 620. In this example, the rule set620 may include a sub-block 621 (e.g., of code) to retrieve theparameter values, a sub-block 622 to determine sub-circuits based on theparameter values, and a sub-block 623 to generate a pin map, forexample. Generating a pin map may include, for example, retrieving pinlists from the sub-circuits to be combined. In one embodiment, the pinmap connections may be embodied in a netlist, such as a verilog “.v”file, for example. Another block 614 may retrieve the sub-circuitschematics determined by block 622, for example. A block 615 may map theschematic pins of the sub-circuits. In one embodiment, the schematicpins are connected based on the pin map, for example. The abovedescribed blocks may be implemented as software code, for example, usinga variety of techniques. While generator 609 is shown here forillustrative purposes as being one group of blocks, it is to beunderstood that the blocks making up generator 609 may be implementedusing different software coding techniques using different languages andmay be implemented as a plurality of different modules, for example. Inone example embodiment described in more detail below, a generatorsoftware system comprises blocks implemented in C++ and other blocksimplemented in a scripting language.

FIG. 6B illustrates an example process of automatically generating acircuit according to an embodiment. While the following processdescription is presented in a particular order, it is to be understoodthat one or more of the following may occur in a different order. At601, functionality of the circuit to be generated is determined forparameters to be processed. The functionality may correspond to aparticular functional circuit component, such as a comparator,oscillator, voltage reference, current source, or other parameterizedanalog building block, for example. In this example, functionality maybe determined using an identifier, such as a functional circuitcomponent name (e.g., “Comparator,” “Oscillator,” “Delay Circuit,” etc.. . . ). For example, a generator may retrieve the functional circuitcomponent name, and then select parameters to retrieve based on thename. At 602, the parameters are retrieved. At 603, the parameters areanalyzed to determine sub-circuits to be used to form the circuit to begenerated, for example. At 604, a pin map of the sub-circuits to be usedto form the circuit is generated. As described in more detail below,sub-circuit schematic pins may be mapped together, in some cases, and toinputs and outputs of the circuit to be generated, for example. Somepins may be mapped between different sub-circuit schematics, whileothers may be mapped to inputs or outputs of the circuit to begenerated. A pin map may be embodied in a circuit specification asdescribed above, for example, which specified the sub-circuit schematicsand the mapping between pins. At 605, sub-circuit schematics to becombined are retrieved (e.g., from a library of released sub-circuits).At 606, the sub-circuit schematic pins may be connected based on the pinmap, for example. In one example embodiment described below, a generatorsoftware component may output a netlist (e.g., in the form of a Verilog“.v” file) mapping the pins. Blocks 614 and 615 may be implemented as ascript for an electronic design automation (EDA) system (e.g., Cadence®,Mentor®, Silvaco®), which may retrieve and combine the sub-circuitschematics as illustrated at 605 and 606, for example.

FIGS. 7A-B illustrate an example of mapping pins according to oneembodiment. In this example, the functional circuit component is acomparator circuit, and the circuit specification parameters specify aninput type (e.g., an N-type or P-type input stage, “N/P-input_type”),hysteresis (e.g., Yes or No, “Hyst”), and deglitch (e.g., Yes or No). Inthis example, the comparator has a set of sub-circuits schematics701-705 which may be selected based on the parameters to generate acomparator having the specified properties (e.g., input type,hysteresis, or deglitch). For instance, in this example C1_SC1 is anN-type input stage comparator sub-circuit schematic 701, C1_SC2 is ahysteresis sub-circuit schematic (NHyst) 702 operable with N-typesub-circuit schematic 701, C1_SC3 is a deglitch sub-circuit schematic703, C1_SC4 is an P-type input stage comparator sub-circuit schematic704, and C1_SC5 is a hysteresis sub-circuit schematic (PHyst) 705operable with P-type sub-circuit schematic 704. Each of the sub-circuitschematics 701-705 may comprise transistor level schematics, forexample, for implementing the functionality of a particular sub-circuit.

Sub-circuit schematics according to some embodiments of the presentdisclosure may have a plurality of pins, including a plurality of analogpins, for coupling voltages and currents into and out of eachsub-circuit schematic. In some embodiments, the pins may be mapped sothat pins in the sub-circuit schematics are either connected to pins ofother sub-circuit schematics or to a pin of the combined circuit (e.g.,an input/output pin of the resulting combined circuit). In one exampleembodiment, mapping pins of different sub-circuit schematics may bebased on a plurality of pin maps, wherein different pin maps specifydifferent connections between pins of the plurality of sub-circuitschematics and/or I/O pins of the circuit schematic for differentcombinations of selected sub-circuit schematics. Such pin maps may bedefined in the code of the circuit generator or defined externally(e.g., in a data record) and imported (e.g., as part of a circuitspecification imported into an EDA tool), for example. A particularmapping may be based on one of the pin maps, for example. The pin mapused for mapping pins may be based on the particular sub-circuitschematics selected. For example, one combination of selectedsub-circuit schematics may have one pin map, and another combination ofselected sub-circuit schematics may have another pin map. Each pin mapmay ensure that each unique combination of sub-circuit schematics isconnected together so that the resulting circuit schematic works asdesired across all parameter values, for example.

Accordingly, mapping may include specifying connections between one ormore pins of the sub-circuit schematics, for example. In someembodiments, mapping may include specifying connections between one ormore pins of one or more sub-circuit schematics and inputs or outputs ofthe circuit schematic (e.g., Vdd, ground, Vin, Vout, etc. . . . of asymbol for the circuit schematic formed by the sub-circuit schematics).In one embodiment, the software may determine the sub-circuit schematicsto be used to form a particular circuit, and then map pins specific tothe combination of particular sub-circuit schematics, for example.

Referring again to FIG. 7A, in this example, N-input sub-circuitschematic 701 comprises pins 1-6, NHyst sub-circuit schematic 702comprises pins 1-4, deglitch sub-circuit schematic 703 comprises pins1-4, P-input sub-circuit schematic 704 comprises pins 1-6, and PHystsub-circuit schematic 705 comprises pins 1-4. These pins may be mappedtogether as illustrated in the examples described below. This examplecomparator is just one example of many types of functional circuitcomponents that may be generated using the techniques described herein.Other functional circuit components, such as oscillators, delaycircuits, voltage references, bias currents, etc. . . . could begenerated from parameters using the techniques described herein, andother comparators may have other parameters for selecting othersub-circuits, for example. Accordingly, this example is merelyillustrative.

As mentioned above, features and advantages of the present disclosuremay select particular sub-circuit schematics based on the parameters andcombine the sub-circuit schematics. In this example, combining thesub-circuit schematics includes mapping the analog pins of thesub-circuit schematics to form the circuit schematic for the at leastone functional circuit component (e.g., a comparator). The mapping maybe done automatically by a software system.

Circuit schematic 710 illustrates one example circuit schematicgenerated based on one set of parameter values. Here, a first set ofparameter values (Params_1) may be “Input type=N,” “Hysteresis=Yes,” and“Deglitch=Yes.” Accordingly, N-input sub-circuit schematic 701, NHystsub-circuit schematic 702, and deglitch sub-circuit schematic 703 areselected and combined to form circuit schematic 710. For thiscombination of parameters, mapping pins may include the following:

-   -   1. Mapping pin 1 of sub-circuit schematic 701 to pin 1 of        sub-circuit schematic 702 and pin 1 of sub-circuit schematic 703        (which in this example is the supply voltage input of each        sub-circuit) and mapping these pins to a Vdd input pin.    -   2. Mapping pin 2 of sub-circuit schematic 701 (e.g., a first        comparator input pin) to input pin IN1.    -   3. Mapping pin 3 of sub-circuit schematic 701 (e.g., a second        comparator input pin) to input pin IN2 750.    -   4. Mapping pin 4 of sub-circuit schematic 701 (e.g., a        hysteresis control input) to pin 3 of sub-circuit 702 (e.g., a        hysteresis control output).    -   5. Mapping pin 5 of sub-circuit schematic 701 (e.g., a        comparator output) to pin 2 of sub-circuit 702 (e.g., a        hysteresis input) and to pin 2 of sub-circuit 703 (e.g., a        deglitch input).    -   6. Mapping pin 6 of sub-circuit schematic 701, pin 4 of        sub-circuit schematic 702, and pin 3 of sub-circuit schematic        703 together and to a ground (GND) pin.    -   7. Mapping pin 4 of sub-circuit schematic 703 to an output pin        (Vout) 751.

Circuit schematic 711 illustrates another example circuit schematicgenerated based on another set of parameter values. Here, a second setof parameter values (Params_2) may be “Input type=N,” “Hysteresis=Yes,”and “Deglitch=No.” Accordingly, N-input sub-circuit schematic 701 andNHyst sub-circuit schematic 702 are selected (deglitch sub-circuitschematic 703 is not selected) and combined to form circuit schematic711. For this combination of parameters, mapping pins may include thefollowing:

-   -   1. Mapping pin 1 of sub-circuit schematic 701 to pin 1 of        sub-circuit schematic 702 (which in this example is the supply        voltage input of each sub-circuit) and mapping these pins to a        Vdd input pin.    -   2. Mapping pin 2 of sub-circuit schematic 701 (e.g., a first        comparator input pin) to input pin IN1.    -   3. Mapping pin 3 of sub-circuit schematic 701 (e.g., a second        comparator input pin) to input pin IN2.    -   4. Mapping pin 4 of sub-circuit schematic 701 (e.g., a        hysteresis control input) to pin 3 of sub-circuit 702 (e.g., a        hysteresis control output).    -   5. Mapping pin 5 of sub-circuit schematic 701 (e.g., a        comparator output) to pin 2 of sub-circuit schematic 702 (e.g.,        a hysteresis input) and to output pin Vout.    -   6. Mapping pin 6 of sub-circuit schematic 701 and pin 4 of        sub-circuit schematic 702 together and to a ground (GND) pin.

Circuit schematic 712 illustrates another example circuit schematicgenerated based on another set of parameter values. Here, a third set ofparameter values (Params_3) may be “Input type=P,” “Hysteresis=Yes,” and“Deglitch=Yes.” Accordingly, P-input sub-circuit schematic 704, PHystsub-circuit schematic 705, and deglitch sub-circuit schematic 703 areselected and combined to form circuit schematic 712. For thiscombination of parameters, mapping pins may include the following:

-   -   1. Mapping pin 1 of sub-circuit schematic 704 to pin 1 of        sub-circuit schematic 705 and pin 1 of sub-circuit schematic 703        (which in this example is the supply voltage input of each        sub-circuit) and mapping these pins to a Vdd input pin.    -   2. Mapping pin 2 of sub-circuit schematic 704 (e.g., a first        comparator input pin) to input pin IN1.    -   3. Mapping pin 3 of sub-circuit schematic 704 (e.g., a second        comparator input pin) to input pin IN2.    -   4. Mapping pin 4 of sub-circuit schematic 704 (e.g., a        hysteresis control input) to pin 3 of sub-circuit schematic 705        (e.g., a hysteresis control output).    -   5. Mapping pin 5 of sub-circuit schematic 704 (e.g., a        comparator output) to pin 2 of sub-circuit schematic 705 (e.g.,        a hysteresis input) and to pin 2 of sub-circuit schematic 703        (e.g., a deglitch input).    -   6. Mapping pin 6 of sub-circuit schematic 704, pin 4 of        sub-circuit schematic 705, and pin 3 of sub-circuit schematic        703 together and to a ground (GND) pin.    -   7. Mapping pin 4 of sub-circuit schematic 703 to an output pin        (Vout).

Circuit schematic 713 illustrates another example circuit schematicgenerated based on another set of parameter values. Here, a fourth setof parameter values (Params_4) may be “Input type=P,” “Hysteresis=Yes,”and “Deglitch=No.” Accordingly, P-input sub-circuit schematic 704 andPHyst sub-circuit schematic 705 are selected (deglitch sub-circuitschematic 703 is not selected) and combined to form circuit schematic713. For this combination of parameters, mapping pins may include thefollowing:

-   -   1. Mapping pin 1 of sub-circuit schematic 704 to pin 1 of        sub-circuit schematic 705 (which in this example is the supply        voltage input of each sub-circuit) and mapping these pins to a        Vdd input pin.    -   2. Mapping pin 2 of sub-circuit schematic 704 (e.g., a first        comparator input pin) to input pin IN1.    -   3. Mapping pin 3 of sub-circuit schematic 704 (e.g., a second        comparator input pin) to input pin IN2.    -   4. Mapping pin 4 of sub-circuit schematic 704 (e.g., a        hysteresis control input) to pin 3 of sub-circuit schematic 705        (e.g., a hysteresis control output).    -   5. Mapping pin 5 of sub-circuit schematic 704 (e.g., a        comparator output) to pin 2 of sub-circuit schematic 705 (e.g.,        a hysteresis input) and to output pin Vout.    -   6. Mapping pin 6 of sub-circuit schematic 704 and pin 4 of        sub-circuit schematic 705 together and to a ground (GND) pin.

Referring now to FIG. 7B, circuit schematic 714 illustrates anotherexample circuit schematic generated based on another set of parametervalues. Here, a fifth set of parameter values (Params_5) may be “Inputtype=N,” “Hysteresis=No,” and “Deglitch=Yes.” Accordingly, N-inputsub-circuit schematic 701 and deglitch sub-circuit schematic 703 areselected (NHyst sub-circuit schematic 702 is not selected) and combinedto form circuit schematic 714. For this combination of parameters,mapping pins may include the following:

-   -   1. Mapping pin 1 of sub-circuit schematic 701 to pin 1 of        sub-circuit schematic 703 (which in this example is the supply        voltage input of each sub-circuit) and mapping these pins to a        Vdd input pin.    -   2. Mapping pin 2 of sub-circuit schematic 701 (e.g., a first        comparator input pin) to input pin IN1.    -   3. Mapping pin 3 of sub-circuit schematic 701 (e.g., a second        comparator input pin) to input pin IN2.    -   4. Pin 4 of sub-circuit schematic 701 (e.g., a hysteresis        control input) may be unconnected.    -   5. Mapping pin 5 of sub-circuit schematic 701 (e.g., a        comparator output) to pin 2 of sub-circuit schematic 703 (e.g.,        deglitch input).    -   6. Mapping pin 6 of sub-circuit schematic 701 and pin 3 of        sub-circuit schematic 703 together and to a ground (GND) pin.    -   7. Mapping pin 4 of sub-circuit schematic 703 to output pin        Vout.

Circuit schematic 715 illustrates another example circuit schematicgenerated based on another set of parameter values. Here, a sixth set ofparameter values (Params_6) may be “Input type=P,” “Hysteresis=No,” and“Deglitch=Yes.” Accordingly, P-input sub-circuit schematic 704 anddeglitch sub-circuit schematic 703 are selected (PHyst sub-circuitschematic 705 is not selected) and combined to form circuit schematic715. For this combination of parameters, mapping pins may include thefollowing:

-   -   1. Mapping pin 1 of sub-circuit schematic 704 to pin 1 of        sub-circuit schematic 703 (which in this example is the supply        voltage input of each sub-circuit) and mapping these pins to a        Vdd input pin.    -   2. Mapping pin 2 of sub-circuit schematic 704 (e.g., a first        comparator input pin) to input pin IN1.    -   3. Mapping pin 3 of sub-circuit schematic 704 (e.g., a second        comparator input pin) to input pin IN2.    -   4. Pin 4 of sub-circuit schematic 704 (e.g., a hysteresis        control input) may be unconnected.    -   5. Mapping pin 5 of sub-circuit schematic 704 (e.g., a        comparator output) to pin 2 of sub-circuit schematic 703 (e.g.,        deglitch input).    -   6. Mapping pin 6 of sub-circuit schematic 704 and pin 3 of        sub-circuit schematic 703 together and to a ground (GND) pin.    -   7. Mapping pin 4 of sub-circuit schematic 703 to output pin        Vout.

Circuit schematic 716 illustrates another example circuit schematicgenerated based on another set of parameter values. Here, a seventh setof parameter values (Params_7) may be “Input type=N,” “Hysteresis=No,”and “Deglitch=No.” Accordingly, N-input sub-circuit schematic 701 isselected (NHyst sub-circuit schematic 702 and deglitch sub-circuitschematic 703 are not selected) to form circuit schematic 716. For thiscombination of parameters, mapping pins may include the following:

-   -   1. Mapping pin 1 of sub-circuit schematic 701 to a Vdd input        pin.    -   2. Mapping pin 2 of sub-circuit schematic 701 (e.g., a first        comparator input pin) to input pin IN1.    -   3. Mapping pin 3 of sub-circuit schematic 701 (e.g., a second        comparator input pin) to input pin IN2.    -   4. Pin 4 of sub-circuit schematic 701 (e.g., a hysteresis        control input) may be unconnected.    -   5. Mapping pin 5 of sub-circuit schematic 701 (e.g., a        comparator output) to output pin Vout.    -   6. Mapping pin 6 of sub-circuit schematic 701 to a ground (GND)        pin.

Circuit schematic 717 illustrates another example circuit schematicgenerated based on another set of parameter values. Here, an eighth setof parameter values (Params_8) may be “Input type=P,” “Hysteresis=No,”and “Deglitch=No.” Accordingly, P-input sub-circuit schematic 704 isselected (PHyst sub-circuit schematic 705 and deglitch sub-circuitschematic 703 are not selected) to form circuit schematic 717. For thiscombination of parameters, mapping pins may include the following:

-   -   1. Mapping pin 1 of sub-circuit schematic 704 to a Vdd input        pin.    -   2. Mapping pin 2 of sub-circuit schematic 704 (e.g., a first        comparator input pin) to input pin IN1.    -   3. Mapping pin 3 of sub-circuit schematic 704 (e.g., a second        comparator input pin) to input pin IN2.    -   4. Pin 4 of sub-circuit schematic 704 (e.g., a hysteresis        control input) may be unconnected.    -   5. Mapping pin 5 of sub-circuit schematic 704 (e.g., a        comparator output) to output pin Vout.    -   6. Mapping pin 6 of sub-circuit schematic 704 to a ground (GND)        pin.

In one embodiment, at least apart of the mapping is performed by rulesdescribed above. For example, a particular rule associated withparticular parameter values/selected sub-circuits may determine whichpins exist for the selected sub-circuit schematics.

Advantageously, mapped analog pins may have predetermined compatibility.For example, because the sub-circuit schematics are predefined, theoperability of different sub-circuit schematics (and sub-circuitschematic pins that may be connected) may have predeterminedcompatibility by design. For instance, in the example shown in FIGS.7A-B, an N-input comparator sub-circuit schematic 701 may be designed tobe used with an N-hysteresis sub-circuit schematic 702, and a P-inputcomparator sub-circuit schematics 704 may be designed to be used with anP-hysteresis sub-circuit schematic 705. Deglitch sub-circuit schematicmay be designed for use with either the N-type or P-type schematics.Accordingly, the pins of sub-circuits may be designed to beautomatically coupled together, for example, to form different circuitsthat operate as designed. For example, an input pin on one sub-circuitmay be designed to receive a voltage input within a particular range. Apin may be designed to have predetermined compatibility with anotherpin, wherein one pin generates a signal with particular voltage orcurrent characteristics and the other pin is designed to receive andprocess the signal, for example. Various pins may be designed to receivevoltages or currents (or both) across particular predetermined rangesduring operation of the combined circuit, for example.

While the above example illustrates particular predefined analogsub-circuit schematics, it is to be understood that a wide variety ofpredefined sub-circuit schematics may be used. In various embodiments, apredefined sub-circuit schematic may comprise as few as one component ormany components. For example, sub-circuit schematics may comprise one ormore active components (e.g., transistors) or one or more passivecomponents (e.g., resistors, capacitors, or inductors). Sub-circuitschematics according to various embodiments may include, for example,two transistors configured as a differential pair, transistors and/orresistors configured as a load, transistors configured as a currentmirror, a variety of complete or partial cascode structures, variousforms of delay stages, trim circuits, or even a single component, forexample. Sub-circuit schematics according to other embodiments mayinclude a large number of components. Examples of more complexsub-circuit schematics include a bandgap stage, an input stage of acomparator or amplifier, regulation stages, or other more complexcombinations of components to perform other analog/mixed signalfunctions. Additionally, analog sub-circuit schematics may comprisedigital circuits, including inverters, registers, latches, and a varietyof logic gates (e.g., AND, OR, NAND, NOR, XOR) to receive digital signalinputs from or provide signal outputs to digital circuitry incorporatedin a mixed signal circuit, for example. Advantageously, differentsub-circuit schematics may be combined to form different functionalcircuits with different operational functions (e.g., a comparator withor without deglitch, trim, hysteresis, etc. . . . ). For example, acircuit designer may design various sub-circuit schematics and ensureinteroperability to meet a range of different operational functions. Thesoftware may then access the predefined sub-circuit schematics andautomatically generate analog circuits based on circuit specificationparameters (e.g., from a user). In some embodiments, sub-circuitschematics for one or more functional circuit component may be combinedand included with sub-circuit schematics for another functional circuitcomponent (e.g., a voltage buffer functional circuit component may beused as a sub-circuit in circuitry for another functional circuitcomponent). Accordingly, a wide variety of analog/mixed-signalintegrated circuit architectures may be decomposed into sub-circuitschematics and recombined on the fly using the techniques describedherein to automate generation of analog circuitry. The particulargranularity and combination of various sub-circuit schematics may be amatter of design choice as would be understood by those skilled in theart of analog circuit design in light of the current disclosure.

Parameterized Circuit Layout Generation

FIG. 8 illustrates a system for automated circuit generation accordingto another embodiment. Features and advantages of the present disclosureinclude a system capable of automatically generating a circuit layoutbased on input parameters, for example, where different values mayresult in different layouts. As illustrated in FIG. 8, a generatorsoftware system 803 may receive parameters 802 and produce a circuitlayout 804. Generator software system 803 may execute on at least onecomputer system, for example, and comprise computer code, which whenexecuted by a computer causes the computer to perform operations forperforming the techniques described herein.

Parameters 802 comprise a plurality of circuit specification parameterscorresponding to at least one functional circuit component 801substantially similar to the circuit specification parameters describedabove, for example. For instance, circuit specification parameters mayspecify properties of a circuit layout to be generated, for example, andmay correspond to particular functional circuit components (e.g., acomparator with particular properties, an oscillator with particularproperties, a delay circuit with particular properties, etc. . . . ).The parameters may be used to generate a circuit layout for a particularfunctional circuit component with different properties based on theparameter values (e.g., a layout for a comparator with a p-type inputstage or a layout for a comparator with an n-type input stage, etc. . .. ). Additionally, in one example embodiment, one set of circuitspecification parameters may correspond to one functional circuitcomponent (e.g., a comparator) and another set of parameters maycorrespond to a different functional circuit component (e.g., a delaycircuit or oscillator). It is to be understood that a variety of codingmechanisms could be used to embody circuit specification parameters tospecify properties of the circuit to be generated.

In this example embodiment, parameters 802 are received by generator803. Generator 803 may use a plurality of sub-circuit layouts 810-812 togenerate a circuit layout 804 based on the circuit specificationparameters. For example, one set of values (or encoding) for thereceived circuit specification parameters may result in use ofsub-circuit layout 810 and sub-circuit layout 811. Another set of values(or another encoding) for the received circuit specification parametersmay result in use of sub-circuit layout 810, sub-circuit layout 811, andlayout 812, for example. The appropriate sub-circuit layouts may becombined to form circuit layout 804. Accordingly, circuit layout 804 isa circuit layout for the functional circuit component 801 having theproperties specified by parameters 802. Layout 804, in turn, may be usedto manufacture a physical circuit for functional circuit component 801.

Embodiments of the present disclosure may be particularly advantageousto generating analog circuit layouts. Embodiments of the presentdisclosure may be used to automatically generate analog circuit layouts,for example, based on parameters. The circuit specifications parametersmay correspond to one or more functional analog circuit components, suchas a comparator, oscillator, delay, etc. . . . . The circuitspecification parameters may specify properties of the analog circuit tobe generated, such as a comparator with a P-type or N-type input, forexample. The circuit specification parameters may be used to determinepredefined analog sub-circuit layouts corresponding to the functionalanalog circuit component. For example, as illustrated in a more detailedexample below, generator 803 may select a predefined P-type comparatorsub-circuit layout, a first predefined hysteresis circuit layout, and/ora predefined deglitch circuit layout based on the parameters to form alayout for a comparator functional circuit component using one set ofparameters, and generator 803 may select a predefined N-type comparatorsub-circuit layout and predefined deglitch circuit layout using anotherset of parameters. The subset of predefined analog sub-circuit layoutsidentified using the circuit specification parameters may be combined toform an analog circuit layout for functional analog circuit component801.

FIG. 9 illustrates a method for automated circuit generation ofaccording to one embodiment. The method may be performed by softwareexecuting on one or more computers, for example. At 901, a plurality ofcircuit specification parameters are received that correspond to atleast one (or more) functional circuit component. At 902, particularsub-circuit layouts are combined based on the circuit specificationparameters to form a circuit layout for the functional circuitcomponent. In one embodiment, each functional circuit component may havea different set of predefined sub-circuit layouts, and a subset of thepredefined sub-circuit layouts corresponding to the functional circuitcomponent are combined based on the circuit specification parameters.For example, a comparator may have an N-type comparator sub-circuitlayout and a P-type comparator sub-circuit layout in the set of layoutscorresponding to the comparator. The P-type sub-circuit layout may beused based on one or more parameters having particular values, and theN-type sub-circuit layout may be used based on the one or moreparameters having different values, for example. The sub-circuit layoutsmay be in the form of functional circuit blocks having a variety ofinput and output terminals (or pins) in the layout. Accordingly,combining may include coupling pins together between the sub-circuitlayouts and/or coupling pins of the sub-circuit layouts to other pins ofother circuit layouts, for example.

FIGS. 10A-D illustrate examples of automated circuit layout generationaccording to various embodiments. In certain embodiments, differentvalues for the circuit specification parameters generate differentanalog circuit layouts having different properties for a correspondingfunctional circuit component. For example, parameters 1002 correspondingto functional circuit component 1001 may be coded with different values.In this example, a set of N parameters (where N is an integer) isillustrated as variables a1, a2, a3, . . . aN having a first set ofvalues [a1=x1, a2=x2, a3=x3, . . . , aN=xN]. Generator software 1003receives parameters 1002 having the first set of values and uses asubset of sub-circuit layouts 1010-1015. The sub-circuit layouts arecombined to form a circuit layout 1004A for the functional circuitcomponent 1001 according to the received parameters. In this example,the first set of parameter values result in sub-circuit layouts1010-1012 being combined to form circuit 1004A.

FIG. 10B illustrates parameters 1002 having a second set of values[a1=x1, a2=x2, a3=y3, . . . , aN=xN]. Here, parameter a3 has changed itsvalue from x3 to y3. Therefore, different sub-circuit layouts arecombined to form circuit layout 1004B. In this example, when a3=y3sub-circuit layout 1012 is no longer included in the circuit layout1004B with sub-circuit layouts 1010 and 1011.

FIG. 10C illustrates parameters 1002 having a third set of values[a1=y1, a2=x2, a3=x3, . . . , aN=xN]. Here, parameter a1 has changed itsvalue from x1 to y1 and parameter a3=x3. Therefore, the sub-circuitsused changes again. In this example, when a1=y1 sub-circuit layout 1010is no longer used. Rather, sub-circuit layout 1013 is included in thecircuit layout 1004C with sub-circuit layouts 1011 and 1012.

FIG. 10D illustrates parameters 1002 having a third set of values[a1=y1, a2=y2, a3=x3, . . . , aN=xN]. Here, parameters a1 and a2 havingvalues of y1 and y2, respectively, result in sub-circuit layout 1014being included in the circuit layout 1004D with sub-circuit layouts 1011and 1012.

Features and advantages of some embodiments of the present disclosuremay include receiving circuit specification parameters 1150corresponding to a plurality of functional circuit components andautomatically generating circuit layouts implementing each functionalcircuit component based on the parameters. FIGS. 11A-D show differentparameter sets generating different circuit layouts for differentfunctional circuit components according to an embodiment. Referring toFIG. 11A, in this example, a generator software system 1101 receivesparameters 1150 corresponding to a plurality of functional circuitcomponents 1102-1105 (components C1, C2, C3, C4, and so on up to CN,where N is an integer corresponding to the number of functional circuitcomponents for which corresponding circuits are being generated). C1-CNmay be a comparator, an oscillator, a delay circuit, a currentgenerator, a voltage reference, or a wide variety of other analogfunctional circuit components used in analog circuits, for example. Inthis example, generator 1101 may receive N sets of circuit specificationparameters, where each different functional circuit component has acorresponding set of circuit specification parameters. In particular, afirst set of parameters 1151, C1_Params, correspond to component C11102, a second set of parameters 1152, C2_Params, correspond tocomponent C2 1103, a third set of parameters 1153, C3_Params, correspondto component C3 1104, and so on up to a final set of parameters 1154,CN_Params, corresponding to component CN 1105, for example. Each set ofparameters 1151-1154 may specify properties of a circuit to be producedby having different parameter values, for example. In this example,parameters 1151 have a first set of values, which are represented hereas “C1_Params_1”. Similarly, parameters 1152 have a first set of values“C2_Params_1”, parameters 1153 have a first set of values “C3_Params_1”,and so on for parameters 1154 having values “C4_Params_1”.

FIGS. 11A-D illustrate examples of automated circuit layout generationaccording to further embodiments. FIGS. 11A-D show examples illustratingthat different circuit specification parameters for differentcorresponding functional circuit components may have differentcorresponding sets of predefined sub-circuit layouts. For example,referring to FIG. 11A, predefined analog sub-circuit layouts may bestored in a library 1160 (e.g., a layout library). In this example,there are multiple sets of sub-circuit layouts 1110, 1120, 1130, and1140 corresponding to different functional circuit components 1102,1103, 1104, and 1105, respectively. Accordingly, C1_Params 1151corresponding to functional circuit component 1102 (C1) may be used tocombine sub-circuit layouts from C1 sub-circuit layout set (“C1_LO_Set”)1110 comprising analog sub-circuit layouts 1111-1116, for example.Similarly, C2_Params 1152 corresponding to functional circuit component1103 (C2) may be used to combine sub-circuit layouts from C2 sub-circuitlayout set (“C2_LO_Set”) 1120 comprising analog sub-circuit layouts1121-1127, for example. Likewise, C3_Params 1153 corresponding tofunctional circuit component 1104 (C3) may be used to combinesub-circuit layouts from C3 sub-circuit layout set (“C3_LO_Set”) 1130(sub-circuit layouts not shown) and so on up to CN_Params 1154corresponding to functional circuit component 1105 (CN), which may beused to combine sub-circuit layouts from CN sub-circuit layout set(“CN_LO_Set”) 1140 (sub-circuit layouts not shown), for example.

Parameters 1151-1154 may have different values that result in differentcombinations of corresponding sub-circuit layouts. In this example, eachset of parameters 1151-1154 receives a first set of parameter values(e.g., particular values are designated here with an “_1”, “_2”, etc. .. . ). For instance, a first set of values for circuit specificationparameters 1151 is designated C1_Params_1, a first set of values forcircuit specification parameters 1152 is designated C2_Params_1, andsoon. In this example, generator 1101 receives parameter valuesC1_Params_1 and combines sub-circuit layouts C1_LO1 1111, C1_LO2 1112,and C1_LO3 1113 from C1_LO_Set 1110 to produce an analog circuit layout1106A corresponding to functional circuit component C1 1102. Similarly,generator 1101 receives parameter values C2_Params_1 and combinessub-circuits C2_LO1 1121, C2_LO2 1122, C2_LO3 1123, and C2_LO4 1124 fromC2_LO_Set 1120 to produce an analog circuit layout 1107A correspondingto functional circuit component C2 1103. Likewise, generator 1101receives parameter values C3_Params_1 and combines sub-circuit layouts(not shown) from C3_LO_Set 1130 to produce an analog circuit layout1108A corresponding to functional circuit component C3 1104. Analogcircuit layout 1108A comprises a first subset of sub-circuit layouts(C3_LO SubsetA) 1131A from C3_LO_Set 1130. Finally, generator 1101receives parameter values CN_Params_1 and combines sub-circuit layouts(not shown) from CN_LO_Set 1140 to produce an analog circuit layout1109A corresponding to functional circuit component CN 1105. Analogcircuit layout 1109A comprises a first subset of sub-circuit layouts(CN_LO SubsetB) 1141A from CN_LO_Set 1140. In some embodiments, aplurality of circuit layouts, such as one or more of layouts 1106A,1107A, 1108A, and 1109A, for different functional components may becoupled together into a layout for a circuit comprising a plurality ofparameterized instances of functional components, for example.

FIG. 11B illustrates generating another circuit layout using another setof parameters according to an embodiment. In this example, each set ofparameters 1151-1154 receives a different set of parameter values. Forinstance, a new set of values for circuit specification parameters 1151is designated C1_Params_2, anew set of values for circuit specificationparameters 1152 is designated C2_Params_2, and so on. In this example,generator 1101 receives parameter values C1_Params_2 and combinessub-circuit layouts C1_LO4 1114, C1_LO2 1112, and C1_LO3 1113 fromC1_LO_Set 1110 to produce an analog circuit layout 1106B correspondingto functional circuit component C1 1102 having different properties thanlayout 1106A, for example. Similarly, generator 1101 receives parametervalues C2_Params_2 and combines sub-circuit layouts C2_LO5 1125, C2_LO61126, C2_LO3 1123, and C2_LO4 1124 from C2_LO_Set 1120 to produce ananalog circuit layout 1107B corresponding to functional circuitcomponent C2 1103 having different properties than layout 1107A, forexample. Likewise, generator 1101 receives parameter values C3_Params_2and combines sub-circuit layouts (not shown) from C3_LO_Set 1130 toproduce an analog circuit layout 1108B corresponding to functionalcircuit component C3 1104 having different properties than layout 1108A,for example. Analog circuit layout 1108B comprises a second subset ofsub-circuit layouts (C3_LO SubsetA′) 1131B from C3_LO_Set 1130. Finally,generator 1101 receives parameter values CN_Params_2 and combinessub-circuit layouts (not shown) from CN_LO_Set 1140 to produce an analogcircuit layout 1109B corresponding to functional circuit component CN1105 having different properties than layout 1109A, for example. Analogcircuit layout 1109B comprises a second subset of sub-circuit layouts(CN_LO SubsetB′) 1141B from CN_LO_Set 1140.

FIG. 11C illustrates generating yet another circuit layout using yetanother set of parameters according to an embodiment. In this example,each set of parameters 1151-1154 receives a third set of parametervalues. For instance, a new set of values for circuit specificationparameters 1151 is designated C1_Params_3, a new set of values forcircuit specification parameters 1152 is designated C2_Params_3, and soon. In this example, generator 1101 receives parameter valuesC1_Params_3 and combines sub-circuit layouts C1_LO4 1114 and C1_LO2 1112from C1_LO_Set 1110 to produce an analog circuit layout 1106Ccorresponding to functional circuit component C1 1102 having differentproperties than layouts 1106A and 1106B, for example. Similarly,generator 1101 receives parameter values C2_Params_3 and combinessub-circuit layouts C2_LO5 1125, C2_LO6 1126, C2_LO3 1123, and C2_LO71127 from C2_LO_Set 1120 to produce an analog circuit layout 1107Ccorresponding to functional circuit component C2 1103. Likewise,generator 1101 receives parameter values C3_Params_3 and combinespredefined sub-circuit layouts (not shown) from C3_LO_Set 1130 toproduce an analog circuit layout 1108C corresponding to functionalcircuit component C3 1104 having different properties than layouts 1108Aand 1108B, for example. Analog circuit layout 1108C comprises a thirdsubset of sub-circuit layouts (C3_LO SubsetA″) 1131C from C3_LO_Set1130. Finally, generator 1101 receives parameter values CN_Params_3 andcombines sub-circuit layouts (not shown) from CN_LO_Set 1140 to producean analog circuit layout 1109C corresponding to functional circuitcomponent CN 1105 having different properties than layouts 1109A and1109B, for example. Analog circuit layout 1109C comprises a third subsetof sub-circuit layouts (CN_LO SubsetB″) 1141C from CN_LO_Set 1140.

FIG. 11D illustrates an embodiment where different sub-circuit layoutsets for different functional circuit components may include the samesub-circuit layout. For example, in some embodiments, differentfunctional circuit components may have a corresponding unique set ofpredefined sub-circuit layouts. Referring to FIG. 11A, sub-circuitlayout set C1_LO_Set 1110 may be a different set of sub-circuit layoutsthan C2_LO_Set 1120 or C3_LO_Set 1130. In particular, sub-circuitlayouts combined to form different comparators may be different than thesub-circuit layouts combined to form different oscillators or differentdelay circuits, for example. Accordingly, each functional circuitcomponent may have corresponding unique sets of sub-circuit layouts.However, in various embodiments, even though the sets are unique, one ormore sub-circuit layouts in some sets may be shared. For example, a setof sub-circuit layouts for a comparator may access a resistor dividersub-circuit layout, and the resistor divider sub-circuit layout may alsobe associated with a set of sub-circuit layouts for an oscillator, forexample. Accordingly, a unique set of layouts may include one or moreunique predefined analog sub-circuit layouts only used for thecorresponding functional circuit component, or alternatively, a uniqueset of layouts may include one or more predefined analog sub-circuitlayouts used for a plurality of different functional circuit components.In this example, a sub-circuit layout C1-2_LO 1117 is included in bothC1_LO_Set 1110 and C2_LO_Set 1120. Further, in this example, C1_Params_1combines C1-2_LO 1117 with other layouts 1111-1113 to form layout 1106D,and C2_Params_1 combines C1-2_LO 1117 with other layouts 1121-1124 toform layout 1107D, for example.

In some embodiments, a plurality of circuit layouts, such as one or moreof layouts 1106A-D, 1107A-D, 1108A-D, and 1109A-D, for differentfunctional components may be coupled together in various combinationsinto a layout for a circuit comprising a plurality of parameterizedinstances of functional components, for example. One circuit layout maycomprise a layout for functional circuit component C1 1102 based on oneset of parameters (e.g., circuit layout 1106D), a layout for functionalcircuit component C2 1103 based on one set of parameters (e.g., circuitlayout 1107C), a layout for functional circuit component C3 1104 basedon one set of parameters (e.g., circuit layout 1108D), and a layout forfunctional circuit component CN 1105 based on one set of parameters(e.g., circuit layout 1109B). Alternatively, combinations of parametersand functional circuit components may generate a layout for functionalcircuit component C1 1102 based on another set of parameters (e.g.,circuit layout 1106B), no layout for functional circuit component C21103 (e.g., C2 is not included), a layout for functional circuitcomponent C3 1104 based on another set of parameters (e.g., circuitlayout 1108C), and no layout for functional circuit component CN 1105(e.g., CN also not included). Any combination of parameters fordifferent functional circuit components may be used to automaticallygenerate a layout with various combinations of one or more of the sameor different functional circuit components, for example. In someembodiments, the layouts may be used to produce an entire chip offunctional circuit components coupled together. The layouts mayoptionally be further processed by a layout editing tool in an EDAsoftware tool (e.g., using auto-routing features of tools such asCadence®, Mentor Graphics®, or Silvaco®), perform layout versusschematic (“LVS”) (e.g., when schematics are also generated) and/ordesign rule checks (“DRC”), for example, and may be sent to amanufacturing facility (e.g., a semiconductor fabrication or “FAB”) toproduce an integrated circuit (e.g., a chip) having the desiredproperties, for example. Typically, designing layouts for an analogintegrated circuit can take lot of time and effort by analog circuitdesign and layout professionals. Advantageously, systems and methodsusing the techniques described herein may generate a schematic orlayout, or both, for an electronic circuit (e.g., a complete chip) veryquickly and in substantially less time that would be required ifdesigning each circuit using traditional techniques.

FIG. 12A illustrates an example of generating a circuit layout accordingto one embodiment. In some embodiments, combining predefined sub-circuitlayouts may be based on a plurality of layout placement instructions toarrange the sub-circuit layouts to form the circuit layout. In thisexample, generator 1200 includes layout placement instructions 1210 thatarrange sub-circuit layouts C1_LO1 1111, C1_LO2 1112, and C1_LO3 1113.Each sub-circuit layout may have a geometry, such as a square orrectangle having a height, h, and width, w, for example. Morespecifically, in this example, C1_LO1 1111 has a height h1 and width w1,C1_LO2 1112 has a height h2 and a width w2, and C1_LO3 1113 has a heighth3 and width w3. Various heights and widths of different sub-circuitlayouts may be the same, but are often different, for example. In otherembodiments, sub-circuit layouts may have a wide variety of other shapes(e.g., with more sides or even open areas within the shape for placingother sub-circuit layouts). It is to be understood that simplegeometries are shown here for illustrative purposes. Placementinstructions 1210 may arrange the sub-circuit layouts 1111, 1112, and1113 to produce the combined circuit layout 1250, for example. In someinstances, one or more of the layout placement instructions 1210 arrangethe sub-circuit layouts 1111-1113 according to an x, y-coordinatesystem. In this example, layout placement instructions 1210 may specifycoordinates for arranging the sub-circuit layouts. As but one example,placement instructions 1210 may place the lower left corner of C1_LO11111 at (0,0) coordinates, the lower left corner of C1_LO3 1113 at(x1=w1,0), and the lower left corner of C1_LO2 1112 at (0, y2=h3). Thecombined sub-circuit layouts 1111-1113 form circuit layout 1250, whichmay be one example layout placement to form circuit layout 1106Acorresponding to functional circuit component C1 1102 in FIG. 11A, forexample. Circuit layout 1250 may include unused space (also known as“white space” or “dead space”) 1201 between the height of C1_LO3, y2=h3,and height of C1_LO1, y1=h1. Another unused space may exist at 1202between the right edge of C1_LO3 at x2=(w1+w3) and the edge of C1_LO2 atx3=w2, for example. It is generally desirable to reduce the amount ofunused space on an integrated circuit. Placement instructions accordingto various embodiments may optimize the combination of sub-circuitlayouts to reduce unused space as illustrated in examples below.

FIG. 12B illustrates another example of generating a circuit layoutaccording to one embodiment. In this example, layout placementinstructions 1211 are executed to combined sub-circuit layouts C2_LO11121 having a height h1 and width w1, C2_LO2 1122 having a height h2 andwidth w2, C2_LO3 1123 having a height h3 and width w3, and C2_LO4 1124having a height h4 and width w4. In this case, the bottom left corner ofC2_LO3 is arranged at (0,0), the bottom left corner of C2_LO4 isarranged at (x1=w3, 0), the bottom left corner of C2_LO2 is arranged at(x1=w3, y1=h4), and the bottom left corner of C2_LO1 is arranged at(x1=h3, 0). The resulting unused space is shown at 1203. The combinedsub-circuit layouts 1121-1124 form circuit layout 1251, which is oneexample layout placement to form circuit layout 1107A corresponding tofunctional circuit component C2 1103 in FIG. 11A.

Embodiments of the present disclosure may arrange sub-circuit layoutsand connect nodes (or pads) of the sub-circuit layouts together usingmetallization layers and routing techniques and tools know to thoseskilled in the art. In one embodiment, a connection between pins of onesub-circuit layout may be formed by a predefined layout (e.g., of ametal layer or polysilicon layer) and arranged as described herein toconnect pins of two sub-circuit layouts, for example. The same techniquemay be used to connect pins of combined circuit layouts, for example, sothat the use of auto-routing tools is reduced or eliminated. FIG. 12Billustrates an example predefined metal layout 1125 arranged to connecta pin on C2_LO3 1123 and C2_LO1 1121.

It is to be understood that any number of instances of parameterizedfunctional circuit components in a variety of combinations may begenerated using the above described techniques to form a circuit layout.For instance, FIG. 13A illustrates an example circuit layout generatedfrom different parameters (e.g., C1_Params_2) and placement instructions1301 for C1_LO4, C1_LO2, and C1_LO3 to form an example circuit layout1106B corresponding to functional circuit component C1 of FIG. 11B.Similarly, FIG. 13B illustrates another example combination of parametervalues and placement instructions. When the parameter values are changedagain (e.g., C1_Params_3), the resulting sub-circuit layouts 1114 and1112 and placement instructions 1302 for C1_LO4 and C1_LO2 form anexample circuit layout 1106C corresponding to functional circuitcomponent C1 of FIG. 11C.

In one example embodiment, different circuit layouts may be formed fromdifferent sets of sub-circuit layouts associated with differentcorresponding layout placement instructions. For example, in oneembodiment, when sub-circuit layouts 1111, 1112, and 1113 are combined,a particular set of layout placement instructions (e.g., placementinstructions 1210) associated with sub-circuit layouts 1111, 1112, and1113 are used for arranging the sub-circuit layouts as illustrated inFIG. 12A. Conversely, when sub-circuit layouts 1121, 1122, 1123, and1124 are combined, another particular set of layout placementinstructions (e.g., placement instructions 1211) associated withsub-circuit layouts 1121, 1122, 1123, and 1124 are used for arrangingthe sub-circuit layouts as illustrated in FIG. 12B. Likewise, whensub-circuit layouts 1114, 1112, and 1113 are combined, as illustrated inFIG. 13A, yet another particular set of layout placement instructions(e.g., placement instructions 1301) associated with sub-circuit layouts1114, 1112, and 1113 are used for arranging the sub-circuit layouts.FIG. 13B illustrates another set of layout placement instructions 1302associated with sub-circuit layouts C1_LO4 1114 and C1_LO2 1112 used foryet another set of parameter values. When sub-circuit layouts 1114 and1112 are combined, as illustrated in FIG. 13B, layout placementinstructions 1302, which are associated with sub-circuit layouts 1114and 1112 are used for arranging the sub-circuit layouts.

In some embodiments, a plurality of layout placement instructionsassociated with a particular combination of sub-circuit layouts may bepredefined. When the layout placement instructions are executed, theassociated sub-circuit layouts are arranged into a combined circuitlayout. As illustrated in an example below, the layout placementinstructions may operate on particular sub-circuit layouts tosequentially position (or reposition) each sub-circuit layout to formthe combined circuit layout, for example.

FIG. 14 illustrates another example of generating a circuit layout usinga layout placement instruction according to an embodiment. Features andadvantages of the present disclosure may include a plurality of layoutplacement instructions that rotate sub-circuit layouts, for example. Forinstance, in this example, the layout placement instructions in FIG. 12Afurther include a rotation of C1_LO3 1113 as shown at 1113′. By rotatingC1_LO3, C1_LO2 may be brought down the y-axis closer to C1_LO1, therebyreducing both the unused space and the entire circuit layout area, forexample.

FIG. 15 illustrates another example of generating circuit layouts usinglayout placement instructions according to an embodiment. In thisexample, generator software system 1500 may include layout placementinstructions 1511 that access placement data 1512 from an external datarecord. For example, a wide range of placement data to arrange thesub-circuit layouts may be defined in an external data record. Theexternal data record may be an external data file sequentiallyspecifying particular sub-circuit layouts and corresponding coordinatesor rotations or other placement information for arranging each layout,for example. In one embodiment, the layout placement instructionscomprise executable instructions that access data specifying thearrangement of the sub-circuit layouts, for example. In one embodiment,the external data record includes placement data for arranging aparticular combination of sub-circuit layouts. For example, if layoutsA, B, and C are to be arranged, then an external data record forarranging layouts A, B, and C may be accessed. Alternatively, if layoutsA, D, and E are to be arranged, then another external data record forarranging layouts A, D, and E may be accessed.

In one example embodiment, the layout placement instructions arepredefined in an external data record. In this example, the externaldata record may comprise a sequence of layouts and associated placementinstructions to be performed on the layout. One example of such anexternal data record is as follows:

// Begin Arrangement of LO, LO2, and LO3

PLACE <path>LO1 0 0PLACE <path>LO2 2.2 0 R90PLACE <path>LO3 6.1 0// end

The above externally defined layout placement instructions have theform: <cmd> <library/location> <sub-circuit_layout_name=“cell_name” >x1y1 R1, where <cmd> is the layout placement instruction (e.g., “PLACE”),<library/location> is the path to where the layout is stored,<sub-circuit_layout_name=“cell_name” > is the name of the layout to beoperated on (e.g., a filename in a directory), x1 is an x-coordinate, y1is a y-coordinate, and R1 is a rotation. The above data record may beread into generator software 1500 and used to define execution of thelayout placement instructions, for example. In this example, generator1500 receives the data record and arranges LO1 1501 at the (0,0)coordinates, then arranges LO2 1502 at the (2.2,0) coordinates with a 90degree rotation, and then arranges LO3 1503 at the (6.1,0) coordinates,for example, to form layout LO1-3 1504.

In some embodiments, generator software 1500 may comprise executablescripts for performing the techniques described herein. In oneembodiment described below, a script may be executed by EDA software(e.g., Cadence®, Mentor Graphics®, or Silvaco®), for example, to accesspredefined sub-circuit layouts and arrange them according to thepredefined placement instructions, for example.

Design Interface

Additional features and advantages of some embodiments include a designinterface that allows users to create circuit designs in software andproduce schematics and/or layouts, for example. FIG. 16 illustratesanother example embodiment including an example of such a designinterface. In this example, a design interface 1601 may be used tospecify one or more functional circuit components C1-CN. In variousexample embodiments, a design interface may be a graphical userinterface (UI), a data sheet (e.g., text based), a natural languageinterface (e.g., receiving spoken inputs), or machine to machineinterface to receive instructions from another machine. In this example,a user may drag and drop (or otherwise select) any of functional circuitcomponents C1-CN from a pallet 1651 to a canvas 1652 and connect thecomponents together to create a circuit. In this example, functionalcircuit components C1, C2, C3, and C4 have been coupled together to forma circuit. The user may then configure the functional circuit componentsby setting parameters associated with the different functional circuitcomponents. An example set of parameters 1654 for a functional circuitcomponent Ci (where i=1 to N) is shown at 1650. In some exampleembodiments, different functional circuit components may have differentsets of parameters for specifying the properties of the functionalcircuit components. As mentioned above, for example, a comparator mayhave parameters for setting a type of input stage, hysteresis, deglitch,or any other type of parameter that the system (e.g., the generator andpredefined sub-circuit schematics and layouts) is designed to support,for example. In this example, a user has selected and configured twodifferent types of functional circuit component C1 (i.e., C1 and C1′)and two different types of functional circuit components C2 (e.g., C2and C2′).

In some embodiments, design interface 1601 may include behavioral modelsfor the parameterized functional circuit components. A behavioral modelmay be a higher level model than a transistor level model used tosimulate transistor level circuit schematics, for example. A behavioralmodel may describe the functional behavior of the circuit, includingvoltages, currents, and signals, for example, but does not capture allthe physical aspects of a circuit implementation. A transistor (ordevice) level model attempts to capture the physical behavior of thecircuit (e.g., the underlying physics of the devices and how they willactually work). A behavioral model may describe (or emulate) what thecircuit is supposed to do, while the transistor level model may describehow the devices in a design will behave. While a transistor level modelmay provide more detail about the operation of the circuit, a behaviorallevel model may generate simulation results faster. In one exampleembodiment, the behavioral model may be a piecewise linear model ofunderlying models for the functional circuit components, for example.

Features and advantages of the present disclosure include providingparameterized functional circuit components with underlying configurablebehavioral models that correspond to actual simulations of combinationsof particular sub-circuit schematics so that a circuit can be defined inthe design interface and a combined schematic and/or a layout can begenerated automatically. For example, functional circuit component Cimay have an associated configurable (or parameterized) model 1655 sothat as parameters 1654 are changed, the behavior of the functionalcircuit component in the design interface Ci changes. The designinterface may perform a behavioral model simulation of the circuits, forexample. The parameters may then be used to generate a circuit schematicand layout having substantially similar behavior. For example, devicelevel simulations of sub-circuits combined to form a circuit schematic1604 may substantially match the behavioral model simulations in thedesign interface.

As one example, a circuit may be defined in the UI 1601 by selectingfunctional circuit component C1 and then selecting desired parameters(e.g., a1=x1, a2=x2, a3=x3) for C1. The behavioral model for C1 may beconfigurable based on the parameters. Thus, the behavioral model for C1with parameters (a1=x1, a2=x2, a3=x3) may be simulated to producesimulations results to indicate to the user how C1 will operate.Advantageously, the same parameters (a1=x1, a2=x2, a3=x3) are used toselect one or more sub-circuit schematics 1610-1612 (e.g., as describedin various embodiments above), which are combined to produce circuitschematic 1604. The selected sub-circuit schematics may be designed andcombined (based on the parameters) to produce substantially matchingsimulation results between the behavioral model simulation (here, ofC1(a1=x1, a2=x2, a3=x3)) and the device model simulation of sub-circuitsselected using parameter values a1=x1, a2=x2, and a3=x3, where thedevice model simulation is more detailed and may take longer to obtainthan the behavioral model simulation, for example. Additionally, one ormore sub-circuit layouts 1620-1622 for each of the sub-circuitschematics combined to form circuit schematic 1604 based on theparameter values may then be combined to produce a corresponding layout1605 automatically using the techniques described herein, for example. Avariety of the same or different functional circuit components may beselected and configured with the same or different parameters, forexample, to generate a variety of circuits and layouts.

Accordingly, a user may select functional circuit components, configurethe functional circuit components with parameter values, and connect thecomponents to obtain a desired circuit functionality at the behaviorallevel, which is typically not subject to actual device level technicalchallenges and potential errors. The parameters 1602 used in theselected functional circuit components may then be received by generator1603 to automatically generate a schematic and/or a layout for theuser's circuit, for example. Accordingly, users may define and generatevery advanced analog and mixed signal circuit schematics and layoutswithout being required to have all the skills typically associated withanalog and mixed signal transistor level circuit design and layout.Furthermore, the present system has the advantage of producingschematics and layouts very quickly, thereby reducing analog and mixedsignal circuit schematic design and layout cycle times and associatedcosts. For example, some analog circuit design and layout cycle timesmay be on the scale of months depending on complexity. Using thetechniques described herein, generating an analog circuit design andlayout may be on the scale of days, hours, or even minutes, for example,depending on complexity.

Example Design and Automated Circuit Generation Process and System

FIG. 17 illustrates an example design and automated circuit generationprocess according to another embodiment. The process shown in FIG. 17shall be explained with reference to FIG. 18. FIG. 18 shows an exampledesign and automated circuit generation system according to anotherembodiment.

Referring to FIG. 17, the process may begin at 1701 with the selectionof functional circuit components (e.g., by a user) using designinterface 1801. At 1702, circuit specification parameters are selectedfor the functional circuit components. The parameters may specifyparticular properties of the functional circuit components to begenerated, for example. In FIG. 18, a user has selected and configuredfive (5) functional circuit components (e.g., C, C2, C1′, C3, and C4,where C1 and C1′ are the same functional component with differentparameters).

In this example, generator software includes generator softwarecomponent 1803 for receiving and processing the circuit specificationparameters 1802, specifying symbols, and generating a netlist. Generatorsoftware of the present example further includes generator scripts 1830for combining selected sub-circuit schematics and arranging sub-circuitlayouts. Generator software in this example may send instructions to anEDA system 1805 (e.g., for editing schematics and layouts). One examplesystem that may be used for system 1805 is an EDA system from Cadence®,for example. In other example embodiments, functionality of the EDAsystem may be included in the generator software. At 1703 the circuitspecification parameters are received by generator component 1803 and asymbol is specified for the functional circuit components. An example ofa symbol specification is illustrated in an example netlist below. FIG.19 illustrates symbols for different functional circuit componentsaccording to an embodiment. Symbols may be created based on theparticular values of the circuit specification parameters, for example.For instance, one set of parameter values may be used to define symbol1901 and another set of parameter values may be used to define symbol1902. The symbols may be used to encapsulate (or represent) particularsub-circuit schematics selected based on the parameter values, forexample. Referring to FIG. 18, generator component 1803 may determinethe sub-circuit schematics 1810-1812 to be used from the receivedparameter values and read all the pins for those sub-circuit schematicsthrough EDA system 1805, for example. As mentioned above, generatorcomponent 1803 may specify connections between pins of the sub-circuitschematics and may further specify connections between pins of thesub-circuit schematics and their corresponding symbol (e.g., using a pinmap). Referring again to FIG. 17, a netlist 1804 may be generated forthe functional circuit components at 1704. Netlist 1804 may specifyconnections between the pins of the sub-circuit schematics selected foreach parameterized functional circuit component (e.g., a comparator) andbetween such pins and the pins of the symbol. Generator component 1803may further output placement data 1808 based on the parameter values andsub-circuits to be combined, as explained further below. The netlist1804 may provide instructions for creating the symbol and connectingpins of sub-circuit schematics, for example, and may include a name ofone or more sub-circuit schematics, a name for the symbol, andinformation for coupling pins together. In one example implementation,the netlist may be a verilog “.v” file, for example. An example outputnetlist for one sub-circuit schematics and one symbol is shown below:

//Parameterized Functional Circuit Component Circuit Generator//Functional Circuit Component: comparator //Parameters: //NAME:comparator_XU0; SPEED:slow; TYPE:n; EDGE:rising; //HYSTERESIS:register;HYSTERESIS:20mV; DEGLITCH:no; VMAX:6V //1. Specify sub-circuit schematic“comparatorinnslow” to be // accessed through EDA System 1805 modulecomparatorinnslow ( V, en, INN, INP, out, G, IP, INNHYSTPBIAS, RISEHYST,FALLHYST, a, SUB); //sub-circuit name and pins  input RISEHYST;  inputV;  input INP;  output INNHYSTPBIAS;  output out;  output [1:0] a; //busoutput  input FALLHYST;  input IP;  input INN;  input G;  input en; input SUB; endmodule //2. Instructions to Create Symbol forParameterized Functional Circuit Component module comparator_XU0(enable_comparator, IP, comparator_out, COMPARATOR_INP,register_comphysteresis, COMPARATOR_INN,G, V,SUB); input V; inputenable_comparator; input IP; // bias current input COMPARATOR_INP; inputCOMPARATOR_INN; output comparator_out; input G; input SUB; input [1:0]register_comphysteresis; //end symbol specification //Define 2-wire bus“a” wire[l :0] a; //Create instance of sub-circuit “comparatorinnslow” -instance name “Xcompn” //Specify connection between sub-circuit pins andsymbol pins (or other sub circuit pins) comparatorinnslow Xcompn( .V(V), //specify connection between stone pin name (.V) and symbol pinname (V) .en (enable comparator), //specify connection between enablepins .INN (COMPARATOR_INN), .INP (COMPARATOR_INP), .IP (IP), .a({a1,a01}), //output bus “a” of comparator to wire “a” above.INNHYSTPBIAS (n1), // floating .FALLHYST (n2), // floating .RISEHYST(n3), // floating .SUB (SUB), .out (comparator_out), .G (G) ); endmodule

The above netlist may be stored in a location for later access bygenerator scripts 1830, for example. It is to be understood that theabove netlist is just one example technique for specifying symbols andconnections between pins. Other techniques may also be used.

Once the netlist is generated, generator component 1803 may signalgenerator component 1830 to start executing scripts 1831-1833. In thisexample, one or more scripts to generate the circuit schematic 1831 maybe executed by EDA system 1805 to get predefined sub-circuit schematicsat step 1705 in FIG. 17. The pins may be connected according to netlist1804 as illustrated at step 1706 in FIG. 17, for example. For example,the netlist may be entered by the scripts into the EDA system 1805 toproduce the combined circuit schematic 1807. The result is one or moresymbols, created as described above, and inside each symbol (e.g., downin the schematic hierarchy) are the sub-circuit schematics used to formeach symbol with pins coupled together based on the netlist. A symbolrepresents the transistor (or device) level schematic for a functionalcircuit component having the parameter values received by the generator,for example. In the case of multiple functional circuit components withcorresponding sets of parameter values, multiple symbols andcorresponding schematics may be created in the EDA system, for example.

Referring again to FIG. 17, the combined sub-circuit schematics are usedto access predefined sub-circuit layouts 1820-1822 at 1707. For example,in one embodiment each sub-circuit schematic 1810-1812 has one or morecorresponding predefined sub-circuit layouts 1820-1822. The sub-circuitschematics may be used by a generate layout script 1832 to retrieve thecorresponding sub-circuit layout using EDA system 1805. At 1708,predefined sub-circuit layouts are arranged based on layout placementinstructions. Advantageously, placement data 1808 may be retrieved toautomatically by arrange layout script 1833 to arrange each sub-circuitlayout as described above and generate a circuit layout 1809.

Example Generator

FIG. 20A illustrates an example generator software system 2001 accordingto one embodiment. It is to be understood that the following is just oneexample implementation of a generator for performing the techniquesdescribed herein. Other software architectures may be used forimplementing some or all of the techniques described herein.

Generator 2001 may receive parameters that specify an analog circuit tobe generated. The parameters may correspond to one or more differentfunctional circuit components. As mentioned above, informationspecifying the circuit to be generated may be received in a wide rangeof ways. Accordingly, generator 2001 may include a decoder 2002 toreceive the parameters and extract the information. In one embodiment,the parameters are received as text, and decoder 2002 parses the textand extracts the parameters. Generator 2001 may include an FCC &Sub-circuit determining block 2003 to receive the parameters anddetermine which functional circuit component(s) are to be generated andwhich sub-circuits are to be used in each functional circuit component.Generator 2001 may include a limit comparison block 2004 to compare theparameters for various functional circuit components and ensure that theparameters are within predefined limits. If the parameters are outsidethe limits, the circuit may not work, and the system may trigger anerror signal or default to other parameter values, for example.

In various embodiments, a generator system may receive predefinedinformation about the circuits to be generated to facilitate automatedcircuit schematic and/or layout generation. Generators according tovarious embodiments may access sub-circuit pin lists, layout scripts tobe associated with particular circuit schematics or families of circuitschematics, parameter limits (describe above), layout parameters (e.g.,lengths of various components), process parameters, and/or generatecustom functional circuit component pin lists based on the receivedparameters, for example. In this example, each functional circuitcomponent has associated data used by generator 2001. For example, dataassociated with one functional circuit component (FCC A) 2020 mayinclude a plurality of pin lists 2021-2023 for different sub-circuitschematics (e.g., sub-circuit schematics 1A-NA), a pin list 2024 for thefunctional circuit component (e.g., all possible pins used in variousversion of FCC A), one or more layout scripts 2025 used with variousversions of FCC A 2020, parameter limits 2026 for FCC A, layoutparameters 2027 (e.g., component lengths for calculated values describedin more detail below), and process parameters 2028 (e.g., used for somecalculated values and/or automated layout as described in more detailbelow). Other data for other functional circuits components (e.g., FCC B2030) may include similar data 2031-2038, for example. Such data may bestored in files or in a database accessible by generator 2001, forexample. In some embodiments, some data may be hardcoded into thegenerator code.

Generator 2001 may access data for functional circuit components toperform a variety of functions. In some embodiments described in moredetail below, generator 2001 may include code for determining resistorattributes, capacitor attributes, and/or transistor attributes (e.g.,code blocks 2006-2008, respectively, referred to herein as calculatedvalues 2005). One or more of code blocks may receive layout parametersor process parameters for a particular functional circuit component, forexample, as described in more detail below. Calculated values 2005 mayinclude one or more circuit models 2009-2010 (e.g., corresponding toparticular functional circuit components) for deriving various valuesused by blocks 2006-2008, for example, from values in the receivedparameters. Examples of a bias current model and delay circuit model arepresented below for illustrative purposes, but other circuit models maybe included in generator 2001, for example. Calculated values 2005 maydetermine a component value (e.g., for a resistor, capacitor, ortransistor), which may be based on layout parameters (e.g. one or morepredefined dimensions for use in the layout). In various embodiments, aplurality of components (e.g., segments or unit components) are createdin the circuit specification and connected for form one combinedcomponent. In one embodiment, component values are encoded in anidentifier associated with a plurality of component symbols included thecircuit specification. In one embodiment, component values are encodedin symbol names for the components, for example as described in moredetail below.

In various embodiments, generator may include code for generating acircuit specification based on the parameters. In this example, generatecircuit specification code 2011 comprises code 2012 (get sub-circuitpins) for retrieving pins for the sub-circuit schematics to be used inthe circuit to be generated, code 2013 to generate a symbol for thecircuit to be generated, and code 2014 (e.g., connect pins) to connectpins of the sub-circuits and pins of the symbol, for example. In thisexample, the connected pins in the circuit specification form a pin mapas described above.

Generate circuit specification 2011 may receive an indication of whichsub-circuits schematics are to be included in the circuit specification,and may retrieve pin lists for those sub-circuit schematics (e.g., oneor more of pin lists 2021-2023 or 2031-2033). An illustrative pin listfor sub-circuit A generated in a circuit specification is as follows:

  Module <sub-circuitA> (pin1, ..., pinN) Input pin1 ... output pinNendmodule

Where the above is for N pins, some of which may be input pins andothers output pins, for example. In one embodiment, the pin lists may befunctional views of sub-circuit schematics received from an EDA tool2060, for example.

Additionally, in this example, generate symbol 2013 may determine whichpins (e.g., out of all possible pins for a particular functional circuitcomponent) are to be included on the symbol based on the parameters. Forexample, FCC A pins 2024 may be received and the parameters evaluated todetermine which pins should be incorporated into a symbol for thecircuit to be generated. An illustrative symbol generated based on theparameters is as follows:

  Module <symbolname> (pin1, ..., pinM) Input pin1 ... output pinM<sub_circuits & connections> endmodule

Where <sub_circuits & connections> specifies the sub-circuits andconnections as illustrated below. Connect pins 2014 may map the pins ofone or more sub-circuit schematics to pins of other sub-circuitschematics or pins of the symbol. The mappings may be included in thecode for connect pins 2014, for example. In one embodiment, code forconnect pins 2014 includes string generators for various possiblecombinations of the sub-circuit schematics and symbols that are selectedbased on the parameters. The following illustrates a pin map generatedin a circuit specification is as follows:

Module <symbolname> (pin1, ... , pinM) Input pin1 ... output pinMsub-circuit_1 (.subcir1_pin1 (symbol/subcir_pin), .subcir1_pin2(symbol/subcir_pin), ... , .subcir1_pinX (symbol/subcir_pin))sub-circuit_2 (.subcir2_pin1 (symbol/subcir_pin), .subcir2_pin2(symbol/subcir_pin), ... , .subcir2_pinY (symbol/subcir_pin)) ...sub-circuit_K CsubcirK_pin1 (symbol/subcir_pin), .subcirK_pin2(symbol/subcir_pin), ... , .subcirK_pinZ (symbol/subcir_pin)) endmodule

The result is a circuit specification for a symbol comprising M pinshaving K sub-PGP circuits. Pin connections are established by“subcirl_pin1 (symbol_pin/subcir_pin)”. The following establishes aconnection between a pin “VOUT” on sub-circuit “AMP” with pin “VIN” onanother sub-circuit:

Module EXAMPLE_SYMBOL (IN, VCC, OUT) Input IN //symbol pin Input VCC//symbol pin output OUT //symbol pin AMP_1 ( .VIN (IN) // connect yinpin on AMP_1 with IN pin on symbol .VDD (VCC) // connect vdd pin onAMP_1 with VCC pin on symbol .VOUT (VIN) // connect VOUT pin of AMP_1with VIN pin of another sub-circuit (not shown). endmodule

Features and advantages of some embodiments may include generatinglayout scripts for automated layout generation of circuits. In oneembodiment, the layout scripts may be customized for particular circuitsembodied in the circuit specifications. Generator 2001 may include codefor retrieving one or more predefined layout scripts customized for oneor more circuits generated based on the received parameters. Generatelayout script code 2015 may retrieve layout scripts for a particularfunctional circuit component or particular combinations orconfigurations of the sub-circuit schematics (and calculated resistors,capacitors, or transistors, if any) based on the received parameters,for example.

Therefore, generator 2001 may produce a circuit specification 2040/2050and a layout script 2045/2055 for each circuit generated in response toreceived parameters. As illustrated at 2040 for a first circuit (Ckt1Spec) and 2050 for a second circuit (Ckt2 Spec), the circuitspecifications may include sub-circuit schematic pin lists2041-2042/2051-2052, symbol pins 2043/2053 (which may encapsulate thesub-circuit schematics and any calculated components), and pin maps2044/2054 specifying connections of the pins, for example. In variousembodiments, one or more functional circuit components may beincorporated into a circuit specification. Some embodiments may includemultiple functional circuit components coupled together to form a morecomplex circuit, for example.

Circuit specifications and layout scripts may be received and processedby an EDA tool 2060. For example, an EDA tool may receive the circuitspecification as a Verilog.v file and generate the symbol populated withthe predefined sub-circuits and connected together according to the pinmap, for example. A variety of circuit schematics 2070, 2072, 2074 maybe generated using different circuit specifications. The circuitschematics may be converted to layout instances and automaticallypositioned for form layouts 2071, 2073, and 2075.

FIG. 20B illustrates an example method of generating a circuitspecification according to an embodiment. In this example, informationspecifying a circuit to be generated is received at 2080. Theinformation may be in the form of parameters, which may be parsed, forexample, or in another format, which may be decoded, for example. Insome embodiments, the system may retrieve parameter limits and compareone or more parameters to the parameter limits to verify the parameters.Sub-circuit schematic pin lists may be selected at 2081 (e.g., based onparameters specifying the circuit to be generated). For example, one ormore pin lists corresponding to one or more sub-circuit schematics maybe selected based on the information. Each pin list may includesub-circuit schematic pins for a corresponding sub-circuit schematic. Inone embodiment, the pin lists and symbol may correspond to a particularfunctional circuit component. As mentioned above, different functionalcircuit components may have different associated sub-circuit schematicpin lists and predefined pins for functional circuit component symbols.At 2082, a subset of the predefined pins for the symbol is selectedbased on said information. Different manifestations of each functionalcircuit component may have different pins (e.g., a comparator withshutdown may have a shutdown pin, but a comparator without shutdown maynot). However, in some embodiments, symbols produced for the samefunctional circuit component may have certain pins in common across allparameters (e.g., a voltage to current converter may always have avoltage input pin, VIN, a supply voltage pin, VDD, ground, GND, and acurrent pin, which may be source or sink based on the parameters). At2083, connections between the sub-circuit schematic pins and the subsetof the plurality of predefined pins for the symbol may be established.At 2084, the circuit specification is generated. The circuitspecification includes sub-circuit schematic pins from the one or morepin lists corresponding to one or more sub-circuit schematics, thesubset of predefined pins for the symbol, and connections between thesub-circuit schematic pins and the subset of predefined pins for the atleast one symbol. The circuit specification may be processed in an EDAtool to produce a circuit schematic, for example. Additionally, a layoutscript may be retrieved based on the information, where the layoutscript is configured to automatically position layout instances for acircuit generated from the circuit specification to produce a layout.The system may also retrieve process parameters. The layout script andprocess parameters may be sent to the EDA tool for generating a layout,for example.

FIG. 20C illustrates a method of generating a circuit specificationaccording to another embodiment. Features and advantages of the presentdisclosure include generating symbols for calculated component values,which is described in more detail below. The following is one exampletechnique for generating a circuit specification for calculatedcomponent values. At 2090, the system receives information specifying anelectronic circuit to be generated. At 2091, the system determines acomponent value for at least one component of the electronic circuitbased on the information. In various embodiments, the component may aresistor (e.g., the component value comprises a resistance), a capacitor(e.g., the component value comprises a capacitance), or a transistor(e.g., a FET, where the component value comprises a gate width, a numberof fingers, etc. . . . ). At 2092, the system generates a plurality ofcomponent symbols. The number of symbols may be part of the calculationof the component value as described below for resistors, capacitors, andtransistors. At 2093, the system encodes the component value in anidentifier associated with each of the component symbols. For example,the identifier may be a symbol name, for example, and the componentvalue may be encoded in the symbol name. At 2094, the system establishesconnections between the component symbols. At 2095, the system generatesa circuit specification to configure the component symbols in series orin parallel, or both. The circuit specification may be sent to an EDAtool and used to generate a circuit schematic.

It is to be understood that a circuit specification may include multiplesymbols for multiple functional circuit components. Each symbol mayinclude symbols for calculated component values. Functional circuitcomponents may also be configured in hierarchies, where a symbol for afirst functional circuit component is encapsulated by a symbol for asecond functional circuit component and sub-circuit schematics for thefirst functional circuit component are coupled to pins of the secondfunctional circuit component symbol, for example. Commonly usedfunctional circuit components (e.g., buffers, current mirrors, etc. . .. ) thus may be used as building blocks for other functional circuitcomponents, for example.

Calculated Values

The present disclosure further relates to automatically generatingelectrical components such as resistors, capacitors, or transistors.

In various embodiments, it may be advantageous to automatically generatecircuits where resistor, capacitor, or transistor values may vary (e.g.,continuously). For example, one circuit may require a resistor,capacitor, or transistor having a particular value, and another instanceof the circuit may require a resistor, capacitor, or transistor havinganother value. Accordingly, techniques for automatically generatingresistors, capacitors, or transistors that may vary across a range ofvalues are disclosed herein.

FIG. 21A illustrates a method of generating circuit components across arange of values according to one embodiment. Features and advantages ofthe present disclosure may include generating components across a rangeof values by configuring multiple such components (e.g., unitcomponents) to form a combined component. For example, a total attributevalue for a component to be generated may be received by the system at2101. The total attribute value may be a total resistance, totalcapacitance, or total gate width of a resistor, capacitor, or transistorto be generated, respectively, for example. The total attribute valuemay be received from a variety of sources. In some embodiments, thetotal attribute value is received as a parameter (e.g., specified by auser). In other embodiments, the total attribute value is determined bythe system based on other parameters (e.g., parameters for a circuitmodel or an on resistance). The total attribute value may be used todetermine a second attribute value at 2102, which is used to determine anumber (N) of components to be combined to form the component to begenerated (at 2103) such that the combined components have the totalattribute value. As illustrated in examples below for various differentcomponent types (e.g., resistors, capacitors, and transistors), unitcomponents (e.g., resistor segments, unit capacitors, or transistorshave unit gate lengths) may be combined to form a combined componenthaving the total attribute value (e.g., total resistance, totalcapacitance, or total gate width). In one embodiment, at least onelayout parameter is received by the system, and the second attributevalue for the component be generated is determined based on the at leastone layout parameter. In various embodiments, the layout parameter mayspecify a length along a dimension of the component to be generated. Forexample, for a resistor, the layout parameter may specify a resistorlayout segment length. For a capacitor, the layout parameter may specifya maximum length along a first dimension of a unit capacitor (e.g., amaximum width). For a transistor, the layout parameter may specify aunit gate width. Advantageously, by incorporating one or more layoutparameters specifying physical attributes of a layout, both a circuitand a layout may be generated automatically as further illustrated inexamples below.

At 2104 a circuit specification is generated. As mentioned above, acircuit specification may specify components of a schematic to begenerated and connections between the components. For example, if thesystem determines that a number (N) of components having the secondattribute value may be combined to form a component with the totalattribute value, the circuit specification may specify N such components(e.g., N resistors: R1, . . . , RN, N capacitors: C1, . . . , CN, or Ntransistors: M1, . . . , MN). The circuit specification may also specifythe connections such the N components combine to form the totalattribute value of the combined component (e.g., resistors connected inseries and/or parallel, capacitors connected in series and/or parallel,or transistor connected in parallel).

At 2105, a transistor level schematic is generated comprising aplurality of components configured with the second attribute value. Forexample, in one embodiment, the circuit specification may be received byan EDA software tool (e.g., as a Verilog input). The EDA tool may readthe circuit specification and generate an empty symbol for eachcomponent specified in the circuit specification. In one exampleembodiment, a script may be used to insert a component into each symboland configure the component with the second attribute value. Terminalsof the component are then connected automatically to terminals of thesymbol. The symbols may be connected together based on the circuitspecification. Accordingly, the plurality of components form a combinedcomponent having the total attribute value. At 2106, a layout isgenerated. The layout may include N layout instances corresponding tothe component configured to produce the total attribute value. Invarious example described below, each component may be converted to alayout instance (e.g., a resistor layout component, capacitor layoutcomponent, or transistor layout component). The layout instances may beautomatically placed using a predefined script associated with aparticular circuit being generated, for example.

FIG. 21B illustrates a method of generating circuit components across arange of values according to another embodiment. As mentioned above,features and advantages of the present disclosure include incorporatinglayout parameters into a design flow as the circuit is being generated.Typically, layout is performed after a circuit is designed. Embodimentsof the present disclosure may incorporate layout parameters as part ofthe circuit generation process to allow a circuit schematic and layoutto be generated automatically. For example, at 2110, informationspecifying an analog circuit to be generated is received by the system.At 2111, layout parameters are retrieved based on at least a portion ofthe information. For example, different manifestations of a particularanalog circuit (e.g., a comparator, current source, oscillator,powerFET, bias current, etc. . . . ) may have resistors, capacitors, andtransistors that vary in sized based on parameters of the circuit beinggenerated. If the circuit includes a resistor, layout parameters for aresistor may be retrieved. If the circuit includes a capacitor, layoutparameters for the capacitor may be retrieved. If the circuit includes atransistor, layout parameters for the transistor may be retrieved. Thelayout parameters may be predefined based on the particular circuitbeing generated, and the layout parameters are used with associatedcircuits. Accordingly, parameters used to generate the layout (e.g.,predefined lengths along various dimensions) may be included in thecircuit generation process to automate the circuit and layout generationprocess, for example. At 2112, one or more attributes of an analogcircuit component are determined based on the information specifying theanalog circuit to be generated and the layout parameters. At 2113, atransistor level schematic of the analog circuit is generated comprisingone or more of the analog circuit components, and the one or more analogcircuit components are configured with the attributes. At 2114, a layoutis generated from the transistor level schematic. The layout may includea plurality of layout instances corresponding to the one or more analogcircuit components, where each layout instances is automaticallypositioned in the layout by layout placement instructions. Asillustrated in various examples below, the layout instances may bepositioned based on the attributes of the analog circuit component(e.g., a resistor may be placed based on the resistor segment length, acapacitor may be placed based on a capacitor width, and a transistor maybe placed based on a gate width). In some embodiments, layout parametersused to determine attributes of components are also used to positionlayout instances derived from circuit schematics for the components.

FIG. 21C illustrates a method of generating circuit components across arange of values according to yet another embodiment. As mentioned above,features and advantages of some embodiments of the present disclosuremay include techniques for specifying and generating analog circuits inEDA tools that may not support automated analog circuit generation. Forexample, existing EDA tools do not have a mechanism for receiving ananalog circuit specification that may be used to automatically generatea transistor level analog circuit schematic and automatically generatean efficient analog circuit layout for complex parameterized analogfunctional circuit components. Embodiments of the disclosure maygenerate a circuit specification and use predefined scripts to convertthe circuit specification into a transistor level schematic and/or alayout, for example.

Automated Generation of Resistors

Features and advantages of the present disclosure include automatedgeneration of resistors. In some embodiments, resistors may be generatedacross a range of values for use in transistor level circuits and/orlayouts, for example.

FIG. 22 illustrates a computer-implemented system for automaticallygenerating resistors according to an embodiment. A computer-implementedsystem as described herein may include software executing on a computersystem 2201, which may include one or more computers (e.g., servercomputers). In this example, computer system 2201 executes generatorsoftware 2202 and schematic & layout generator software 2203. It is tobe understood that other example implementations may partition thesoftware differently (e.g., as a single software system performing thefunctionality described herein or as more software components).

Features and advantages of the present disclosure may automaticallygenerate schematics, layouts, or both, that include resistors based onspecified or calculated resistor values received by the system, forexample. For instance, a system according to the present disclosure mayreceive a resistor value and automatically generate a schematic for theresistor, a layout for the resistor, or both. In this example, aresistor value Rtotal, corresponding to a resistor 2210 is to begenerated by a resistor specification generator component 2212 ofgenerator software 2202. In various embodiments, one or more resistorvalues may be specified by a user, for example, and received bygenerator software 2202 as an input parameter. In other embodiments, oneor more resistor values may be calculated based on other parametersreceived by generator 2202, for example, as described in more detailbelow.

Features and advantages of some embodiments include converting aresistor value into segments, such as series resistor segments to begenerated, parallel resistor segments to be generated, or one or morecombinations of both series and parallel resistors. For example,resistor specification generator 2212 may determine a first number N ofresistor segments to be configured in series and/or a second number M ofresistor segments to be configured in parallel to approximately producethe resistor value Rtotal. In one embodiment, the resistance of theresistor segments may be the same, for example. Once the numbers Nand/or M are determined, a circuit specification 2213 (e.g., for Rtotal)may be generated to produce a schematic, a layout, or both, for example.In this example, resistor specification generator 2212 may generate acircuit specification 2213 to configure the first number N of resistorsegments in series and/or the second number M of resistor segments inparallel. While one series combination of resistors and one parallelcombination of resistors for producing Rtotal is illustrated here, it isto be understood that only series combinations, only parallelcombinations, or multiple series and/or parallel combinations could beused to obtain Rtotal within an allowable tolerance, for example.

In various embodiments, the circuit specification 2213 may specify aconfiguration for a plurality of components. In this example, thecomponents correspond to resistor segments (e.g., as illustrated byresistor segments 2214-2218), and circuit specification 2213 may specifyconnections between the resistor segments. For instance, the circuitspecification may be a netlist, such as a verilog.v file as mentionedabove, where connections between components are based on commonspecified nodes in the netlist.

Example embodiments of the present disclosure may further receive one ormore predefined physical dimensions for a resistor segment 2211.Predefined physical dimensions may be set to advantageously optimizelayout of the different resistor values, for example, as furtherillustrated below. For example, the predefined physical dimension may bea predefined length of a resistor segment, Lseg, and/or the predefinedwidth of a resistor segment, Wseg. Predefined physical dimensions may beassociated with the resistor value to be generated so that particularresistors to be generated may access the predefined physical dimensions.Accordingly, when a particular resistor value, Rtotal, for a particularcircuit or project is received, associated parameters such as Lsegand/or Wseg for the particular resistor may be obtained from a knownstorage location (e.g., from a memory, file, or database), for example.

In some embodiments, different resistors to be generated for differentresistor values may have different corresponding predefined physicaldimensions (e.g., lengths and/or widths). Thus, one resistor to begenerated with a first value, Rtotal1, may have a first correspondingpredefined length and/or predefined width, and another resistor to begenerated with a second value, Rtotal2, may have a second correspondingpredefined length and/or predefined width. As mentioned above andillustrated further by way of example below, incorporating one or morepredefined physical dimensions may be used to improve the layout of aresistor across a range of resistor values, for example.

In some embodiments, resistor specification generator 2212 may furtherreceive a sheet resistivity, for example.

The following equations illustrate an example calculation of N and Mbased on a predefined length, predefined width, and sheet resistivity:

N=Number of Resistor Segments 2211 in Series may be based on the wholenumber portion of Rtotal divided by the resistance of the segment,Rsegment (e.g., Div(Rtotal/Rsegment, i.e., the quotient of Rtotaldivided by Rsegment).M=Number of Resistor Segments 2211 in Parallel is based on the remainderportion of Rtotal divided by the resistance of the segment, Rsegment(e.g., Mod(Rtotal/Rsegment). In one example embodiment, a maximum numberof parallel resistors may be specified and the value for M is the numberof parallel resistors that result in Rtotal to within an allowabletolerance, for example.Lseg stored in BIO; Wseg calculated from process design rules

The resistance of a segment can be written as:

Rseg=ρ(Lseg/Wseg),

where p (rho) is the sheet resistivity (known as “sheet rho”, which is aparameter specified by the particular semiconductor manufacturingprocess used), Lseg is the segment length, and Wseg is the segment width(e.g., which may be set based on current density and the particularresistor type used). Accordingly, the resistance of a resistor segmentmay be based on length, width, and/or rho.

The total resistor value, Rtotal, may be determined as follows:

Rtotal=(Rseg*M)—Series only,

Rtotal=(Rseg/N)—Parallel only,

Rtotal=(Rseg*M)+(Rseg/N)—Combination of Series and Parallel.

Features and advantages of certain embodiments may further includegenerating a schematic for the resistor value based on the circuitspecification. In this example, circuit specification 2213 is sent fromgenerator software system 2202 to a schematic and layout generatorsoftware system 2203. Schematic and layout generator software system2203 may be an electronic design automation (EDA) software system asmentioned above, for example. Software system 2203 may include aschematic generator component 2220 to generate a resistor schematic 2221from the circuit specification 2213. Schematic generator component 2220may receive a netlist, for example, and convert the netlist to schematicsymbols and connections between the schematic symbols, for example.However, some schematic generators may not be able to set the attributesof components, such as resistors, to particular specified values basedon a netlist. Accordingly, in one example embodiment, a schematic importcomponent 2222 may analyze the circuit specification 2213 or thegenerated schematic 2221, for example, and set attributes of components,such as the resistors, in the generated schematic.

In one example embodiment, the circuit specification 2213 may specifycomponents corresponding to resistor segments, and the schematicgenerator 2220 may generate schematic symbols without resistor segmentsfor such components (e.g., if the component name in a netlist does notexist in software system 2203's library, the generated symbol may beempty). Thus, initially, the generated schematic includes a plurality ofempty symbols, where pins of the symbols are coupled together asspecified in the received netlist. Schematic import component 2222 mayidentify empty components and execute an algorithm for insertingresistor segments into the symbols. For example, schematic importcomponent 2222 may automatically insert a resistor segment in each ofthe empty schematic symbols and connect terminals of the insertedresistor segment with the pins of the schematic symbol, for example.

In some embodiments, schematic import component 2222 may include codefor setting the attributes of the resistors. For example, attributes fora resistor may include physical dimensions of the resistor, such aslength and width. Attributes may also include a resistor type (e.g.,polysilicon, doped polysilicon, or metal). Attributes of one or moreresistors may be passed between software components in various ways. Inone embodiment, the specification may include information for settingthe attributes. For example, attributes may be encoded in an identifierfor a component in the circuit specification 2213 (e.g., encoded inname(s) of resistor(s) in the netlist). Accordingly, when a symbol forthe component in the netlist is used to create a symbol, the symbol mayinclude the identifier. The identifier may be read by schematic importcomponent 2222, for example, and used to place a resistor inside theempty symbol. In other embodiments, attributes may be stored in apredefined location and accessed by schematic import component 2222, forexample. More detailed example techniques for passing attributes forresistors are presented below for illustrative purposes.

Accordingly, schematic generator 2220 may output a resistor schematic2221. Resistor schematic 2221 may include a plurality of symbols havingpins. Each symbol may have a resistor segment embedded inside. Asmentioned above, the symbols are coupled together in one or more seriesand/or parallel configurations. The combined symbols, each with aninternal resistor segment, for example, form the desired total resistorvalue, Rtotal. In some example embodiments, the resistor segments usedto form one total resistor value, Rtotal, may each have the same length,width, and resistor type.

Features and advantages of some embodiments of the present disclosuremay include automatically generating a resistor layout from a resistorschematic. For example, resistor schematic 2221 may be converted into aresistor layout 2224 by layout generator 2223. Layout generator 2223 mayconvert the resistor segments inside the symbols of the schematic intopolygons, for example, where each polygon has the dimensions specifiedfor a corresponding resistor segment. In one embodiment, layoutplacement instructions 2225 may be executed to position each polygon inthe layout as described in more detail below. Accordingly, the resistorsegments forming the total resistor value, Rtotal, in the schematic maybe automatically converted to resistor layout 2224.

FIG. 23 illustrates a method of generating a resistor according to anembodiment. In one embodiment, the present disclosure includes software,which when executed performs a method as follows. At 2301, a resistorvalue to be generated may be received. At 2302, the software maydetermine at least one number of series configured resistor segments orat least one number of parallel configured resistor segments (or both)to produce the received resistor value. At 2303, a circuit specificationis generated. The circuit specification may specify a configuration of aplurality of components corresponding to resistor segments, for example.At 2304, a schematic is generated based on the circuit specification.The schematic may include a plurality of symbols corresponding to theplurality of components. Each symbol may comprise a resistor segment,for example. The symbols are coupled together automatically based on thecircuit specification to produce the resistor value. At 2305, a layoutmay be generated from the circuit schematic. The layout may comprisepolygons corresponding to each resistor segment. In one embodiment, thepolygons are placed automatically by layout placement instructions.

FIG. 24 illustrates a method of generating a resistor according toanother embodiment. In this example, a resistor value for a resistor tobe generated is received at 2401, and at least one physical dimensioncorresponding to at least one resistor segment is received 2402.Physical dimensions, such as length and/or width, may be advantageouslyused in this example to optimize the layout of a plurality of resistorsegments that produce the resistor value, for example. At 2403, thesoftware may determine at least one number of series configured resistorsegments and/or at least one number of parallel configured resistorsegments to produce the received resistor value. At 2404, a circuitspecification is generated.

FIG. 25A illustrates a method of generating a resistor according to yetanother embodiment. In this example, a resistor value for a resistor tobe generated is received at 2501, and a circuit specification isgenerated at 2502. Here, the circuit specification specifies componentscorresponding to resistor segments. A schematic is generated at 2503based on the circuit specification. The schematic includes symbolscorresponding to the components in the circuit specification. In thisexample, the symbols may not have resistors segments (e.g., the symbolsare empty). Accordingly, at 2504, resistor segments are inserted intothe symbols. The symbols, and inserted resistor segments, may be coupledtogether in the schematic to produce the resistor value.

FIG. 25B illustrates a method of generating a resistor according to yetanother embodiment. In this example, a resistor value for a resistor tobe generated is received at 2510, and a circuit specification isgenerated at 2511. Here, the circuit specification specifies componentscorresponding to resistor segments having one or more predefinedphysical dimensions. At 2512, a schematic is generated based on thecircuit specification. The schematic comprises resistor segmentsconfigured to produce the resistor value (e.g., in series and inparallel). At 2513, a layout is generated. The layout comprises polygonscorresponding to the resistor segments. The polygons may beadvantageously placed based on the one or more predefined physicaldimensions of the resistor segments to produce the layout of theresistor, for example.

FIG. 25C illustrates another embodiment. Various embodiments of thepresent disclosure may apply some or all of the techniques describedherein in various combinations and at various different levels toautomate resistor generation. In this example, a resistor value isdetermined at 2520 (e.g., by a circuit generation engine). The resistorvalue may be converted into a schematic at 2521 (e.g., into an EDAtransistor level circuit schematic in Cadence®). The schematic, in turn,is converted into polygons at 2522. The polygons for the resistor may beplaced automatically by layout placement instructions at 2523. Forexample, the particular circuit being generated may be associated with aplurality of layout placement instructions that position each of thepolygons for the resistor in particular locations in the layout. Thelayout placement instructions may sequentially place each polygon andconnect the terminals of the polygons to produce the desired resistorvalue, for example.

Example Embodiments for Generating Resistors

FIG. 26 illustrates an example resistor schematic and layout accordingto an embodiment. In this example, a resistor schematic 2610 comprises Nsymbols 2611-2613 coupled together in series and M symbols 2614-2616coupled together in parallel. The symbols may be coupled together viapins, for example. The parallel symbols are in series with the seriesconfigured symbols as shown. An example symbol 2620 includes symbol pins2621 and 2622. Symbol 2620 comprises a resistor segment 2623, Rseg,having a first terminal 2624 and a second terminal 2625. As mentionedabove, in some embodiments, symbol 2620 may be generated without aresistor segment (e.g., as an empty symbol). Resistor segment, Rseg, mayhave been inserted in symbol 2620 by software. The software may furtherconnect resistor terminal 2624 to symbol pin 2621 and connect resistorterminal 2625 to symbol pin 2622, for example. In one embodiment, thesoftware may comprise scripts that execute in an electronic designautomation (EDA) software system, for example (e.g., Skill scripts inCadence®), which may detect an empty symbol instance resulting from aschematic generated in response to receiving a netlist, for example, andinsert the resistor automatically. The scripts may further setattributes of the inserted resistor using the values generated asdescribed above.

The combined resistance of the resistor segments in the symbols2611-2616 may produce the total resistor value to be generated, Rtotal.As mentioned above, in some embodiments, the resistor segments may havethe same resistor segment values, Rseg, the same predefined length,Lseg, and the same predefined width, Wseg, for example. Using one ormore known lengths and/or widths for the resistor segments mayadvantageously allow efficient automated layout.

Example layouts 2690 a-c illustrate how different resistor values may beautomatically generated according to various embodiments. Layout 2690 acomprises two (2) sub-circuits 2650 and 2651 and a resistor comprising aplurality of resistor layout segments 2680. Resistor layout segments2680 may correspond to a plurality of polygons, for example, in alayout. Resistor layout segments 2680 may be generated from a resistorschematic, such as schematic 2610, for example. Accordingly, in thisexample, the resistor segments 2623 in symbols 2611-2616 generatecorresponding polygons 2680. In other embodiments it is possible that asingle resistor in a schematic may be converted into multiple polygonsand automatically placed as described herein, for example. In thisexample, each of the resistor layout segments 2680 has the same length,Lseg, and width, Wseg. Resistor layout segments 2680 may be laid out inparallel as shown (e.g., side by side along a length or width) andcoupled together (e.g., using metal or polySi) in series and/or inparallel (e.g., as illustrated in schematic 2610) so the totalresistance is Rtotal.

As illustrated in layouts 2690 a-c, a different number of resistorlayout segments 2680 may be used to produce different values of Rtotal.Some values of Rtotal may result in fewer resistor layout segments,while other values of Rtotal may result in more resistor layoutsegments. Layouts 2690 b and 2690 c illustrate two resistance values forRtotal. Layout 2690 b has fewer resistor layout segments than layout2690 c. However, the value of Rtotal for layout 2690 b may be greaterthan or less than the value of Rtotal for layout 2690 c depending on theconfiguration of parallel and series resistors. Advantageously, thenumber of resistor layout segments used across different designs fordifferent values of Rtotal may vary by placing the resistor layoutsegments side-by-side (e.g., along their lengths) and coupling themtogether according to different numbers of series and/or parallelcombinations, as shown. As described in more detail below, layoutplacement instructions may place the resistor layout segments inparallel along their lengths in an area reserved for the resistor layoutsegments. In this example, an area 2660 vertically below the layout forsub-circuit 1 2651 and horizontally adjacent to sub-circuit 2650 in thelayout is reserved for resistor layout segments 2680. The reserved area2660 in the layout may comprise a polygon having one dimension (here, areserved height, Hr) approximately equal to the resistor segment length(e.g., plus an offset) and a second dimension (here, a reserved width,Wr) equal to a multiple of the width (e.g., plus an offset or spacebetween segments) to fit resistor layout segments across a range oftotal resistor values, Rtotal. In one example embodiment, the reservedwidth, Wr, is equal to a multiple of the resistor layout segment widthplus an offset to fit a minimum number of resistor layout segments and amaximum number of resistor layout segments to produce resistors from aminimum total resistor value, Rtotal_min, to a maximum total resistorvalue, Rtotal_max, for example.

FIG. 27A illustrates example layouts generated for two resistor valuesused with two different circuits according to an embodiment. In thisexample, a first resistor value, Rtotal1, for use with a first circuit(Ckt1) may be converted to a layout by layout generator software 2790.In one embodiment, the resistor value (e.g., Rtotal1) is a calculatedvalue for one functional circuit component (e.g., a bias currentgenerator) specified using parameters as described above, for example.Rtotal1 may be used to produce a schematic comprising a plurality ofresistor segments as described above. The resistor segments may have afirst predefined length, Lseg1, as well as other attributes, associatedwith Rtotal1 and the corresponding circuit (Ckt1) and included in theschematic, for example. The resistor segments in the schematic areconverted to resistor layout segments 2710, with each resistor layoutsegment having the first predefined length, Lseg1, as illustrated inlayout 2701. Layout 2701 may further include sub-circuits correspondingto circuitry for the first circuit (e.g., current bias circuitry) thatRtotal1 is used with, for example. Generator 2790 may implement thefirst circuit as sub-circuit layouts 2751 and 2752, for example.

A second resistor value, Rtotal2, for use with a second circuit (Ckt2)may be converted to a layout by layout generator software 2790. Here,Rtotal2 is a calculated value for another functional circuit component(e.g., an oscillator) specified using parameters as described above, forexample. Rtotal2 may be used to produce a schematic comprising aplurality of resistor segments as described above. The resistor segmentsmay have a second predefined length, Lseg2, as well as other attributes,associated with Rtotal2 and the second circuit (Ckt2) and included inthe schematic, for example. The resistor segments in the schematic areconverted to resistor layout segments 2720, with each resistor layoutsegment having the second predefined length, Lseg2, as illustrated inlayout 2702. Layout 2702 may further include sub-circuits correspondingto circuitry for the second circuit (e.g., oscillator circuitry) thatRtotal2 is used with, for example. Generator 2790 may implement thesecond circuit as sub-circuit layouts 2753 and 2755, for example.

The examples in FIG. 27A illustrate that resistor values used withdifferent circuits may have different predefined physical dimensions insome embodiments. In various embodiments of each circuit, more or fewerresistor layout segments 2710 and 2720 may be used in conjunction withcircuits 2751/2752 and 2753/2754/2755 as Rtotal1 and Rtotal2 change,respectively. However, the segment lengths, Lseg1 and Lseg2, may staythe same. As illustrated by examples below, however, physical dimensionssuch as length may change based on which other sub-circuits are includedin the circuit to optimize layout, for example.

FIG. 27B illustrates two resistor values used with the same circuitaccording to an embodiment. In this example, two resistor values Rtotal3and Rtotal4 for two different resistors to be generated are provided tolayout generator software 2790, which produces layout 2703, for example.In this example, the first received resistor value, Rtotal3, whichcorresponds to a first resistor in the circuit, is converted to resistorlayout segments 2730 that each have a length, Lseg3. Similarly, thesecond received resistor value, Rtotal4, which corresponds to a secondresistor in the circuit, is converted to resistor layout segments 2740that each have a length, Lseg4. Generator 2790 may generate a layout fora circuit as sub-circuit layouts 2756 and 2757, for example. It is to beunderstood that in yet other embodiments, Rtotal3 and Rtotal4 may usethe same resistor segment length, Lseg, for example.

FIG. 28 illustrates example layouts generated for a resistor value fordifferent sub-circuit configurations according to an embodiment. In someembodiments, different physical dimensions may be used for the sameresistor value, Rtotal 2850, depending on the other circuitry used inthe layout. For example, as the surrounding circuitry changes (e.g.,when different parameter types or values select different sub-circuits),different size resistor layout segments may be used to fit in differentopen spaces to optimize the resulting layout. In this example, aresistor value of Rtotal may be implemented in resistor layout segmentshaving a length, Lseg1, when the resistor is included in a circuit withsub-circuits 2810 and 2811 as illustrated in layout 2801. However, theresistor value Rtotal may result in resistor layout segments havingdifferent lengths or configurations when the resistor is included in adifferent circuit with sub-circuit 2811 as illustrated in layouts 2802and 2803, for example. Layout 2802 illustrates one example segmentlength, Lseg2, that may be used when only sub-circuit 2811 is in thelayout, and alternatively, layout 2803 illustrates another examplesegment length, Lseg3, that may be used when only sub-circuit 2811 isalso in the layout. Layout 2804 illustrates that another segment length,Lseg4, may be used when yet another combination of sub-circuits2810-2812 are in the same layout as the resistor layout segments forRtotal. As illustrated from layouts 2801-2804, different layouts withdifferent sub-circuits may result in different options for laying outresistor segments. For one combination of sub-circuits, one set ofphysical dimensions (e.g., Lseg and/or Wseg) may form a more optimallayout (e.g., smaller size or better electrical performance). When thecombination of sub-circuits changes, a different set of physicaldimensions for the resistor segments may result in a more optimallayout. In one example embodiment, parameters for one or more functionalcircuit components may be evaluated, and different predefined physicaldimensions may be accessed associated with resistor segments based onthe parameters so that the layout and/or placement of the resistorlayout segments in the layout changes based on the other sub-circuits inthe layout, for example.

FIG. 29 illustrates an example layout of resistor segments according toan embodiment. Features and advantages of some embodiments of thepresent disclosure may include automatically generating and placingresistor layout segments (e.g., polygons) to produce resistor valuesreceived in a software system, for example. FIG. 29 illustratesautomatic placement of a plurality of resistor layout segments 2950 toproduce a resistor value, Rtotal. In this example, a first resistorlayout segment 2901 having a length, Lseg, and width, Wseg, is placed atthe (0,0) coordinates of the x,y-axis. A second resistor layout segment2902 having the same length and width is placed in parallel along thelength of first resistor layout segment 2901 (i.e., side by side) andoffset from segment 2901. The resulting placement of segment 2902 is(x=Wseg+offset,y=0), which is a function of Wseg, for example. The sumof Wseg and the offset are referred to as a “step,” which may be used toiteratively place each segment. Accordingly, the resistor layoutsegments 2950 in this example may be placed based on a predefinedphysical dimension (e.g., here Wseg) according to the followingequation: Place (i*step, 0), where “i” is equal to 0 to (1−total numberof resistor layout segments) and “step” is a placement offset based onWseg (e.g., Wseg plus an additional Design Rule Check offset “DRCoffset,” which may be stored and accessed during runtime), for example.In some embodiments, each resistor layout segment may be associated witha unique identifier (e.g., an instance name), and the unique identifiersmay be named so that the resistor layout segments may be sorted.Accordingly, the resistor layout segment identifiers may be sorted(e.g., R1, R2, R3, . . . etc.) and then each resistor layout segment maybe sequentially placed (e.g., in a software loop) to produce a layout ofRtotal, for example.

FIG. 30 illustrates another example layout of resistor segmentsaccording to an embodiment. This example illustrates that layoutplacement instructions may be used to place resistor layout segments atpredefined locations in a layout, and such placement instructions mayfurther be used to rotate the resistor layout segments, for example. Forinstance, here, a resistor layout segment 3001 is placed at the x1, y1starting coordinates of the x,y-axis in a reserved area adjacent to(e.g., to the right of) the layout of sub-circuit A 3050 and adjacent to(e.g., above) the layout of sub-circuit B 3051. Resistor layout segment3001 is further rotated by an angle θ=90 degrees, for example.

A resistor layout segment 3002 is further placed at the x1,y1 startingcoordinates and offset along the y-axis based on the width and otherfactors (e.g., DRC). As above, segment 3002 is rotated by an angle θ=90degrees. Similarly, additional resistor layout segments may be placed toproduce a total resistor value of Rtotal. Accordingly, the resistorlayout segments in FIG. 30 may be placed based on a predefined physicaldimension (e.g., here Wseg) according to the following equation: Place(x1, y1, step, r=90°, p=+), where x1 is the x-axis initial placementcoordinate, y1 is the y-axis initial placement coordinate, step is theplacement offset based on Wseg (e.g., step=f(Wseg)), “r” is therotation, and “p” is the polarity of the steps (up or down/left orright). Generally, example embodiments of the present disclosure mayinclude a script that executes layout placement instructions thatspecify placement of a resistor, a starting x-coordinate, a startingy-coordinate, an offset based on at least one physical dimension of theresistor segments, a rotation, and a polarity (e.g., p+/−). In FIGS. 29and 30, the resistor layout segments are successively placed atincreasing values along the x-axis (FIG. 29) and y-axis (FIG. 30) (e.g.,positive polarity steps), but it is to be understood that the polarityof the steps may also be in negative direction, for example.

FIG. 31 illustrates passing resistor attributes according to anembodiment. In certain embodiments, it may be advantageous to receiveresistor attributes, such as length, width, or resistor type, for use ina schematic. In one embodiment, a circuit specification is used togenerate a schematic that includes a symbol for a resistor. However,some schematic generators in certain electronic design automation (EDA)software systems may not have the ability to receive netlists thatspecify resistors or values for resistors used in transistor levelschematics. Accordingly, in one embodiment, a circuit specification maybe generated with one or more identifiers, which may be used set theattributes of the resistor. For example, one or more resistor values maybe encoded in the name of the symbol in the circuit specification. Forinstance, specification 3101 may include an identifier for thecomponent, such as a component name. The component identifier mayinclude one or more encoded resistor attributes 3110. For example, acomponent in circuit specification 3101 may have the name“rlpp3000rpo5p22u2p5u,” where “rlpp3000” corresponds to a particularlibrary, rpo corresponds to a resistor type (e.g., poly, poly++, ormetal, here rpo=“poly”), “5p22u” corresponds to a 5.22 micrometerresistor length, and “2p5u” corresponds to a 2.5 micrometer width, forexample. The following example code illustrates taking a resistorcellname and splitting it up to decode resistor parameters:

if(stmcmp(Cname “rlpp3000rpo” 10)==0 then  rexCompile(“rlpp3000rpo”) newstring=rexReplace(Cname “” 1) //comment: string becomes 40p0u2p0u  rexCompile(“p”)  newptstring=rexReplace(newstring “.” −1) //comment −1replaces all “p” with “.”, string becomes 40.0u2.0u paramstring=parseString(newptstring “u”) //comment: string split to(“40.0” “2.0”) // comment: length first then width 1=40.0 w=2.0 length=car(paramstring)  width=cadr(paramstring) )

The specification may be received by a schematic generator component3121 to convert the circuit specification into a schematic 3122 (e.g., atransistor level schematic). The schematic 3122 may initially comprisesymbols corresponding to resistor components in the circuitspecification. However, the symbols corresponding to the resistor mayinitially be empty. Schematic import component 3123 may read the name ofa symbol in the schematic and (i) insert a resistor value in theschematic, (ii) connect the resistor terminals to the symbol pins, and(iii) populate the attributes of the resistor based on the encoded name.For example, based on the encoding above, schematic import component3123 may select and insert a polysilicon resistor in a symbol from the“rlpp3000” library having a Lseg=5.22 um and Wseg=2.5 um, for example.

Example series and parallel resistors specified in a circuitspecification is as follows:

Example 1: Parallel Connected Resistor Components Named“rlpp3000rpo7p5u2p0u”

  //Type poly :0.20000Kohm Resistor module rlpp3000rpo7p5u2p0u (RP, RN); inout RP;  inout RN; endmodule rlpp3000rpo7p5u2p0u R0(  .RP (RP),  .RN(RN), ); rlpp3000rpo7p5u2p0u R1(  .RP (RP),  .RN (RN), );rlpp3000rpo7p5u2p0u R2(  .RP (RP),  .RN (RN), );

Example 2: Series Connected Resistor Components Named

  “rlpp3000rpo24p8u2p0u”: module rlpp3000rpo24p8u2p0u (RP,RN);  inoutRP;  inout RN; endmodule rlpp3000rpo24p8u2p0u R4(  .RP (RP),  .RN(RP_1), ); rlpp3000rpo24p8u2p0u R5(  .RP (RP_1),  .RN (RP_2), );rlpp3000rpo24p8u2p0u R6(  .RP (RP_2),  .RN (RP_3), );

In Example 1 above, the first module statement defines a component named“rlpp3000rpo7p5u2p0u” having two terminals RP and RN (e.g., positive andnegative). The following statements create 3 instances of the componentnamed R1, R2, and R3, which have their positive and negative terminalsconnected together. Similarly, in Example 2 above, the module statementdefines a component named “rlpp3000rpo24p8u2p0u,” which also has twoterminals (positive and negative). The statements that follow createthree instances of the component named R0, R1, and R2. However, theterminals of the components R4, R5, and R6 are connected in series(e.g., the negative terminal of R0 is assigned to node RP1 and thepositive terminal of R1 is also assigned to RP1, etc. . . . ).Accordingly, receiving instances R1, R2, and R3 in an EDA tool (e.g., asa verilog input) may result in 3 component symbols being created in atransistor level schematic having symbol names rlpp3000rpo7p5u2p0u andinstance names R1, R2, and R3. The symbols are coupled together inparallel. Similarly, receiving instances R4, R5, and R6 may result in 3component symbols being created in a transistor level schematic havingsymbol names rlpp3000rpo24p8u2p0u and instance names R4, R5, and R6.These symbols are coupled together in series. In each case, the symbolnames may be read and resistors with the encoded attributes may beinserted as described above.

FIG. 32 illustrates passing resistor attributes to a schematic accordingto another embodiment. In this example, specification 3202 is sent fromgenerator 3201 to schematic generator 3250. Resistor attributes 3203 forone or more resistors to be generated in the schematic may be stored ina location accessible by schematic import component 3251, for example.In one embodiment, the resistor attributes may be encoded as above, oralternatively the resistor attributes may not be encoded (e.g., storedin a table or as text or in any other manner that can be retrieved froman accessible computer memory location). Schematic import component 3251may read the resistor attributes 3203 and then populate a schematicusing the schematic generator 3250 with the resistor attributes, forexample. The resulting schematic 3252 may include resistors inserted insymbols as described above with attributes of the resistor in theschematic filled in with attributes 3203, for example.

As mentioned above, in one example embodiment, a generator is a firstprogram that may receive circuit parameters and produce a specificationof a circuit to be generated. The circuit specification may be sent toan electronic design automation (EDA) software systems, which mayinclude a schematic generator. A schematic import component may compriseone or more scripts for performing the techniques described in FIGS. 31and 32, for example.

FIG. 33 illustrates generating a resistor specified in a user interfaceaccording to an embodiment. In this example, a user may design a circuitin a design user interface (UI) 3301 (aka a front end). The design UI3301 may perform a high level behavioral simulation of the circuit, forexample, rather than a transistor level simulation. In this example, theuser has selected a first functional circuit component 3302 (e.g., acomparator or amplifier) and a resistor component 3303. Components 3302and 3303 are coupled together in the design interface. A user mayspecify a resistor value for resistor component 3303 in user interface3304, for example, and input a desired value for Rtotal. In thisexample, Rtotal may be within a predefined range from a minimum value,Rmin=100 ohms, to a maximum value, Rmax=1 megaohm. Functional circuitcomponent 3302 may also have user selected parameters, for example, asdescribed above. Parameters from the UI 3301 may be used to generate aschematic 3310. The schematic may include one or more sub-circuits 3311selected based on the parameters received for functional circuitcomponent 3302. Additionally, the schematic may include a resistorschematic for Rtotal 3313. The resistor schematic 3313 may comprise aplurality of symbols, such as symbol 3314, configured in series and/orparallel that each include a resistor segment, for example. The combinedschematic may approximately produce the value of Rtotal entered by theuser (e.g., to within a degree of error acceptable for the properfunction of the circuit).

FIG. 34 illustrates an example layout of a resistor specified in a userinterface. In this example, parameters for functional circuit component3302 are used to generate sub-circuit layouts 3401. The user enteredvalue for resistor component 3303 (e.g., Rtotal) is used to generate andplace a plurality of resistor layout segments 3403 a-n that each have apredefined segment length and segment width to form, in combination, thevalue of Rtotal 3403, for example. As the user entered value of Rtotalchanges, the number of resistor layout segments 3403 a used to produceRtotal changes. In this example, for any resistor value Rtotal, thefirst resistor layout segment may be placed in the layout starting at aposition adjacent to the layout of sub-circuit 3401 (e.g., position(xi,yi) 3450), and then subsequent resistor layout segments may beplaced at positions offset along the x-axis (e.g., here, in the negativex-axis direction so that the segments are configured in parallel alongtheir lengths and spaced apart by an offset).

FIG. 35 illustrates generating a resistor based on circuit parametersspecified in a user interface according to an embodiment. As mentionedabove, one or more resistor values, Rtotal, may be received as a resultof a calculation by the generator software. In this example, a user maydesign a circuit in design user interface (UI) 3501 that includes afirst functional circuit component 3502 (e.g., here, a bias currentgenerator circuit) and one or more other functional circuit components3503. Components 3502 and 3503 are coupled together in the designinterface (e.g., the bias current is coupled to one or more of the otherfunctional circuit components). The user may specify parameters for eachfunctional circuit component, which are sent to generator software.Parameters for component 3502 may be used to calculate one or moreresistor values based on a model. In this example, a user may enter adesired current for the bias current generator circuit 3502 in userinterface 3504, for example. The user may input a desired value forIbias in a text field, for example. In this example, Ibias may be withina predefined range from a minimum value, Ibias_min=0.5 uA, to a maximumvalue, Ibias_max=5 uA. Other functional circuit components 3503 may alsohave user selected parameters, for example. Parameters from the UI 3501may be used to generate a schematic, which may include an Ibiasschematic 3510 and sub-circuit schematics 3511 for the other functionalcircuit components 3503. Additionally, the Ibias schematic 3510 mayinclude a resistor schematic 3514 for Rtotal. The resistor schematic3514 may comprise a plurality of symbols, as illustrated in FIG. 33,configured in series and/or parallel that each include a resistorsegment, for example. The combined schematic may produce approximatelythe value of Rtotal calculated by the generator software (e.g., towithin a degree of error acceptable for the proper function of thecircuit).

The following example illustrates one resistor calculation by generatorsoftware in response to receiving parameters for a bias currentgenerator functional circuit component 3502. If a user enters a value ofIbias between Ibias_min and Ibias_max, Rbias may be calculated based ona circuit model as follows:

Ibias=Vref/Rbias→Rbias=Vref/Ibias.

where Vref may be a known parameter entered as part of either functionalcircuit components 3502 or 3503, calculated based on yet otherparameters, or automatically set by the software based on otherparameters (e.g., Vdd), for example. Thus, the above equation for Rbiasis an example circuit model that may be used to determine Rbias based onvalues of Ibias received as parameters. Accordingly, a user may enterone value (e.g., of a continuous range of values) as a parameter, andgenerator software may convert the value into a resistor value, Rtotal,to be implemented as a schematic, layout, or both, for example. Asdescribed above, the generator software may access predefined physicaldimensions for resistor segments and convert Rbias into a series and/orparallel combination of resistors having a known segment resistance,Rseg, length, Lseg, and Width, Wseg. The schematic for Rbias may begenerated as described above and coupled to a schematic for transistor3513 and amplifier 3512 to produce Ibias schematic 3510, for example.While calculating resistor values is illustrated here in the context ofa bias current generator circuit, it is to be understood that resistorvalues may be calculated for a wide range of other analog or mixedsignal circuits by those skilled in the art of analog/mixed signalcircuit design.

FIG. 36 illustrates an example layout of a resistor determined fromparameters according to an embodiment. One or more functional circuitcomponents 3503 and corresponding parameters may result in layouts 3601and 3602. Ibias 3502 and parameters entered for Ibias (e.g., 0.5 uA to5.0 uA) may result in layout 3603 corresponding to sub-circuits 3512 and3513, for example, and a layout of resistor layout segments 3604 for thecalculated value of Rbias. As described above, each resistor layoutsegment 3605 a may have the same resistor segment value, Rseg, length,Lseg, and Width, Wseg, for example, which combine to form Rbias.Accordingly, as the value entered by a user for a particular circuitparameter changes across a continuous range of values, a calculatedresistor value changes, and the resulting number of resistor layoutsegments to produce the calculated resistor value changes. Such exampleembodiments may advantageously allow generator software to receiveparameters across a continuous range of values (e.g., from a user) andautomatically generate analog circuit schematics and/or analog circuitlayouts to implement the specified circuit behavior, for example.

Automated Generation of Resistor Dividers

Features and advantages of some embodiments of the present disclosuremay include automated generation of resistor dividers. FIGS. 37A-Cillustrates generating resistor dividers according to an embodiment. Forexample, in various embodiments, a resistor divider functional circuitcomponent 3701 may have parameters corresponding to total resistance,number of taps, enable/disable functions, and the like. Parameter values3702 for a configured resistor divider functional circuit component maybe received in generator software 3703, which may comprise resistordivider generator component 3705. The parameters may specify a resistordivider to be generated. Resistor divider generator component 3705 maydetermine a plurality of resistor values corresponding to resistorsbetween one or more outputs of the resistor divider.

Resistor divider generator 3705 may generate a wide range of resistordividers 3706 with different numbers of output taps and different totalresistances. Example resistor dividers are illustrated in FIG. 37B.Resistor divider 3707 includes two resistors and one output (or tap).Resistor divider 3707 may receive first reference voltage on an inputterminal (Top). Top resistor 3710 includes a terminal coupled betweenthe first reference voltage on the input, and the output tap and bottomresistor 3711 includes a terminal coupled between the output tap and asecond reference voltage on a bottom terminal (e.g., ground).

Resistor divider 3708 includes three (3) resistors and two output taps.A top resistor 3712 has a terminal coupled to a top input to receive areference voltage and a second terminal coupled to a first tap (Tap1).An intermediate resistor 3713 includes a first terminal coupled to Tap1and a second terminal coupled to a second output tap (Tap0). The bottomresistor 3714 has a first terminal coupled to tap0 and a second terminalcoupled to a bottom terminal (e.g., to receive a second referencevoltage).

Resistor divider 3709 includes N output taps (where Nis an integer) andN+1 resistors including top resistor 3715, bottom resistor 3716, and aplurality of intermediate resistors and taps (not shown).

FIG. 37C illustrates that each resistor in a resistor divider generatedby resistor divider generator 3705 may be implemented as a plurality ofseries and/or parallel resistor segments as described above. Forexample, resistor divider generator 3705 may determine a plurality ofresistor segments to approximately produce each of the plurality ofresistor values illustrated in FIG. 37B. Each resistor value in FIG. 37Bmay be implemented as a first number of resistor segments in seriesand/or a second number of resistor segments in parallel. Resistordivider 3720 shows one example implementation of resistor divider 3707.In this example, top resistor 3710 is implemented as a plurality ofresistor segments 3723 configured in series and/or parallel to producethe resistance value for resistor 3710. Similarly, resistor 3711 isimplemented as a plurality of resistor segments 3724 configured inseries and/or parallel to produce the resistance value for resistor3711.

In some embodiments, resistor divider generator software component 3705may determine a total resistance for the resistor divider to begenerated (e.g., the sum of the resistor in series) and values of eachresistor (e.g., based on output tap voltages specified in theparameters) based on a number of taps and the voltages at each tap. Forexample, if output taps are specified as percentages of the inputvoltage (e.g., Tap1=10%, Tap2=50%, Tap3=70%, etc. . . . ), values forresistors in an N-tap resistor divider 3709 may be determined asfollows. Starting with the bottom resistor 3716 and moving up theresistor divider across N+1 resistors to the top resistor 3715:

Rbottom=R1=Rtotal*tap1/100

R2=Rtotal*(Tap2−Tap1)/100

Ri=Rtotal*(Tap_i−Tap_i−1)/100

Rtop=R_N+1*(1−TapN)/100.

Accordingly, in the above example, resistor values are determined basedon a number of taps and a voltage difference across two of an inputvoltage, a plurality of tap voltages, and a bottom voltage. The voltagedifference may be expressed as actual voltages or as a percentage of theinput voltage as illustrated in the above example.

In one embodiment, each resistor value in the resistor divider may besent as an input to resistor generator software component 3704 todetermine values for the plurality of resistor segments for eachresistor in the divider, for example. Accordingly, each resistor in theresistor divider may be implemented as a plurality of resistor segments.

Once the resistor segments are determined, a circuit specification maybe generated. A circuit specification is generated to configure each ofthe resistor segments to form the resistor values. For resistor divider3707, for example, the circuit specification may configure a firstplurality of resistor segments in series and/or parallel to form a topresistor 3723, and the circuit specification may configure a secondplurality of resistor segments in series and/or parallel to form abottom resistor 3724. As mentioned above, the circuit specification maybe netlist, for example. For resistor divider 3708, a circuitspecification may configure a first plurality of resistor segments inseries and/or parallel to form a top resistor 3725, a second pluralityof resistor segments in series and/or parallel to form a bottom resistor3727, and a third plurality of resistor segments in series and/orparallel to form intermediate resistor 3726 (e.g., where parametersspecify two output taps). For resistor divider 3709, a circuitspecification may configure a first plurality of resistor segments inseries and/or parallel to form a top resistor 3728, a second pluralityof resistor segments in series and/or parallel to form a bottom resistor3729, and one or more additional pluralities of resistor segments inseries and/or parallel to form one or more intermediate resistors (e.g.,where parameters specify more than two output taps).

The circuit specification for the resistor divider may be used togenerate a transistor level schematic comprising resistor segmentsconfigured to produce said resistor divider. As mentioned above, atransistor level schematic symbol may be generated for each resistorsegment specified in the circuit specification for the resistor divider,and a resistor may be inserted into the symbol and configured with aresistor value and other attributes (e.g., Runit, Lseg, Wseg). Thecircuit specification may specify how the resistor segments are to beconnected together in the schematic to form a resistor divider. Examplesof resistor divider schematics are shown in FIG. 37C, where resistordivider 3720 includes one output tap, resistor divider 3721 includes 2output taps, and resistor divider 3722 includes N output taps.

FIG. 38A illustrates a method of generating a resistor divider includingsub-circuits according to another embodiment. In some embodiments, itmay be advantageous to include active circuitry in a resistor divider.For example, parameters 3802 for a resistor divider functional circuitcomponent 3801 may include a parameter to specify an enable function(e.g., enable=yes). Accordingly, resistor divider software component3805 in generator software 3803 may generate a circuit specificationthat specifies one or more sub-circuit schematics 3807-3809 as part ofthe resistor divider to produce a resistor divider schematic 3810. Thespecified sub-circuit schematics may be configured to receive an inputto enable or disable the resistor divider, for example. It is to beunderstood that other functionality may be incorporated into theresistor divider using other sub-circuit schematics.

In one embodiment, the sub-circuit schematics may comprise a switch forenabling and disabling the resistor divider. FIG. 38B illustratesvarious embodiments of resistor dividers with different configurationsof switches. For example, in one embodiment shown in 3820, a switch 3826is coupled between an input of the resistor divider and one or moreterminals of top resistor segments used to produce a resistance R1 3824of the resistor divider. Since each resistance 3824 . . . 3825 individer 3820 comprises multiple resistor segments, which may be inparallel, the switch may be couple to a terminal of one segment orterminals of multiple segments in parallel. Switch 3826 may include anenable input (en) to enable or disable the resistor divider. In thisexample, the switch is a high voltage switch (HV SW), and may include atransistor that can withstand a high input voltage at the top of thedivider. In divider 3821, a switch 3829 is coupled between a referenceinput of the resistor divider (e.g., ground) and one or more terminalsof bottom resistor segments used to produce resistance RN+1 3828 of theresistor divider. In this case, switch 3829 may be low voltage switchthat does not need to withstand the full voltage applied to the input ofthe divider. In divider 3822, a switch 3832 may be coupled between oneof the output taps (here, Tap 1) of the resistor divider and one or moreterminals of intermediate resistor segments (e.g., resistor segments inRN 3830) of the resistor divider.

Automated Generation of Capacitors

Features and advantages of the present disclosure include automatedgeneration of capacitors. In some embodiments, capacitors may begenerated across a range of values for use in transistor level circuitsand/or layouts, for example.

FIG. 39 illustrates a computer-implemented system 3901 for automaticallygenerating capacitors according to an embodiment. Features andadvantages of the present disclosure may automatically generateschematics, layouts, or both, that include capacitors based on specifiedor calculated capacitor values received by the system, for example. Forinstance, a system according to the present disclosure may receive acapacitor value and automatically generate a schematic for thecapacitor, a layout for the capacitor, or both. In this example, acapacitor value Ctotal, corresponding to a capacitor 3910 is to begenerated by a capacitor specification generator component 3912 ofgenerator software 3902. In various embodiments, one or more capacitorvalues may be specified by a user, for example, and received bygenerator software as an input parameter. In other embodiments, one ormore capacitor values may be calculated based on other parametersreceived by generator software, for example, as described in more detailbelow.

Features and advantages of some embodiments include converting acapacitor value into segments, such as series unit capacitor segments tobe generated, parallel unit capacitor segments to be generated, or oneor more combinations of both series and parallel unit capacitors. Forexample, capacitor specification generator 3912 may determine a firstnumber S of capacitor segments to be configured in series and/or asecond number P of capacitor segments to be configured in parallel toapproximately produce the capacitor value Ctotal. S and P may beintegers greater than or equal to one (1), for example. S and/or P mayalternatively be represented as N. In one embodiment, the capacitance ofthe unit capacitors may be the same, for example. Once the numbers S ofseries capacitors and/or P parallel capacitors are determined, a circuitspecification 3913 (e.g., for Ctotal) may be generated to produce aschematic, a layout, or both, for example. In this example, capacitorspecification generator 3912 may generate a circuit specification 3913to configure the first number S of capacitor segments in series, oralternatively, the second number P of capacitor segments in parallel (ora combination of both). While one series combination of capacitors andone parallel combination of capacitor are illustrated here asalternatives for producing Ctotal, it is to be understood thatcombinations of series and parallel capacitors could be used to obtainCtotal within an allowable tolerance, for example.

In various embodiments, the circuit specification 3913 may specify aconfiguration for a plurality of components. In this example, thecomponents correspond to unit capacitors (e.g., as illustrated bycapacitor segments 3914-3918), and circuit specification 3913 mayspecify connections between the capacitor segments. For instance, thecircuit specification may be a netlist, such as a verilog.v file asmentioned above, where connections between components are based oncommon specified nodes in the netlist.

Example embodiments of the present disclosure may further receive one ormore predefined physical dimensions for a capacitor segment 3911.Predefined physical dimensions may be set to advantageously optimizelayout of the different capacitor values, for example, as furtherillustrated below. For example, the predefined physical dimension may bea predefined maximum length along one dimension of a capacitor segment(e.g., length, Lseg) or a predefined maximum length along anotherdimension of the capacitor segment (e.g., width, Wseg). Predefinedphysical dimensions may be associated with the capacitor value to begenerated so that particular capacitors to be generated may access thepredefined physical dimensions. Accordingly, when a particular capacitorvalue, Ctotal, for a particular circuit or project is received,associated parameters such as Lseg or Wseg for the particular capacitormay be obtained from a known storage location (e.g., from a memory,file, or database), for example.

Features and advantages of certain embodiments may further includegenerating a schematic for the capacitor value based on the circuitspecification. In this example, circuit specification 3913 is sent fromgenerator software system 3902 to a schematic and layout generatorsoftware system 3903. Schematic and layout generator software system3903 may be an electronic design automation (EDA) software system asmentioned above, for example. Software system 3903 may include aschematic generator component 3920 to generate a capacitor schematic3921 from the circuit specification 3913. Schematic generator component3920 may receive a netlist, for example, and convert the netlist toschematic symbols and connections between the schematic symbols, forexample. However, some schematic generators may not be able to set theattributes of components, such as capacitor, to particular specifiedvalues based on a netlist. Accordingly, in one example embodiment, aschematic import component 3922 may analyze the circuit specification3913 or the generated schematic 3921, for example, and set attributes ofcomponents, such as the capacitor, in the generated schematic.

In one example embodiment, the circuit specification 3913 may specifycomponents corresponding to a plurality of unit capacitors (e.g.,configured in series or parallel or both), and the schematic generator3920 may generate schematic symbols without unit capacitors for suchcomponents (e.g., if the component name in a netlist does not exist insoftware system 3903's library, the generated symbol may be empty).Thus, initially, the generated schematic may include a plurality ofempty symbols, where pins of the symbols are coupled together asspecified in the received netlist. Schematic import component 3922 mayidentify empty components and execute an algorithm for insertingcapacitors into the symbols. For example, schematic import component3922 may automatically insert a capacitor in each of the empty schematicsymbols and connect terminals of the inserted capacitor with the pins ofthe schematic symbol, for example.

In some embodiments, schematic import component 3922 may include codefor setting the attributes of the capacitors. For example, attributesfor a capacitor may include physical dimensions of the capacitor, suchas length and width. Attributes may also include a capacitor type (e.g.,metal-insulator-metal, “mim”). Attributes of one or more capacitors maybe passed between software components in various ways. In oneembodiment, the specification 3913 may include information for settingthe attributes. For example, as mentioned above, attributes may beencoded in an identifier for a component in the circuit specification3913 (e.g., encoded in name(s) of capacitor(s) in the netlist).Accordingly, when a symbol for the component in the netlist is used tocreate a symbol, the symbol may include the identifier. The identifiermay be read by schematic import component 3922, for example, and used toplace a capacitor inside the empty symbol. In other embodiments,attributes may be stored in a predefined location and accessed byschematic import component 3922, for example. More detailed exampletechniques for passing attributes for capacitor are presented below forillustrative purposes.

Accordingly, schematic generator 3920 may output a capacitor schematic3921. Capacitor schematic 3921 may include a plurality of symbols havingpins. Each symbol may have a capacitor segment embedded inside. Asmentioned above, the symbols are coupled together in one or more seriesand/or parallel configurations. The combined symbols, each with aninternal capacitor segment, for example, form the desired totalcapacitor value, Ctotal. In some example embodiments, the capacitorsegments used to form one total capacitor value, Ctotal, may each havethe same length, width, and capacitor type.

Features and advantages of some embodiments of the present disclosuremay include automatically generating a capacitor layout from a capacitorschematic. For example, capacitor schematic 3921 may be converted into acapacitor layout 3924 by layout generator 3923. Layout generator 3923may convert the capacitors inside the symbols of the schematic intopolygons, for example, where each polygon has the dimensions specifiedfor a corresponding capacitor segment. In one embodiment, layoutplacement instructions 3925 may be executed to position each polygon inthe layout as described in more detail below. Accordingly, the capacitorsegments forming the total capacitor value, Ctotal, in the schematic maybe automatically converted to capacitor layout 3924.

FIG. 40A illustrates a method of generating capacitors according to anembodiment. At 4001, a capacitance value is received for a capacitor tobe generated. The capacitance value may be received as an inputparameter defined by a user in a user interface, for example, or thecapacitance value may be received from a software module that determinesa capacitance value based on parameters of a circuit to be generated,for example. At 4002, the system determines a number N of unitcapacitors having a unit capacitance to be combined to form the totalcapacitance. The number N may alternatively be denoted as P (forparallel) capacitor segments configured in parallel or S (for series)capacitor segments to be configured in series (or as a combination ofboth). At 4003, a transistor level schematic is generated comprising Nunit capacitor schematics having the unit capacitance. The N unitcapacitor schematics are configured to produce the total capacitance ofthe capacitor to be generated. At 4004, a layout is generated comprisingN capacitor layout elements configured to produce said capacitor.

FIG. 40B illustrates one example technique for determining capacitordimensions according to an embodiment. At 4010, a capacitor value isreceived (e.g., Ctotal=25 pf). In some embodiments, a capacitorgenerator software component in generator software may retrievepredefined capacitance parameters. For example, a maximum capacitanceand minimum capacitance may be stored and retrieved for use ingenerating a capacitor. In some embodiments, different capacitors typesmay have different predefined maximum capacitances and/or minimumcapacitances, for example, and the system may select a set of predefinedcapacitance parameters based on other information about a circuit orcapacitor to be generated (e.g., selection based on a specifiedcapacitor type or a capacitor type automatically selected for use in aparticular analog circuit). In this example, the received capacitance,Ctotal, is compared to a predefined maximum capacitance, Cmax at 4011.If the Ctotal>Cmax, then the system may determine a number N(alternatively denoted, P) of unit capacitors, Cunit, to be configuredin parallel as shown at 4013. Cunit may be a capacitance value so that Nparallel unit capacitors combine to form Ctotal. Accordingly, aplurality of unit capacitors, Cunit, may be advantageously used so thatthe size of each capacitor is less than a predefined maximumcapacitance. If Ctotal<Cmax, then at 4012 the received capacitance,Ctotal, is compared to a predefined minimum capacitance, Cmin. IfCtotal<Cmin, then the system may determine a number N (alternativelydenoted, S) of unit capacitors, Cunit, to be configured in series asshown at 4014. In this case Cunit may be a capacitance value so that Nseries unit capacitors combine to form Ctotal. Accordingly, a pluralityof unit capacitors may be advantageously used so that the size of eachcapacitor is greater than a predefined maximum capacitance. In thisexample, if Cmin<Ctotal<Cmax, then a single unit capacitor may be used.Combinations of parallel and series capacitors may be used in someembodiments to obtain capacitor values.

At 4015, the system may determine physical dimensions of the unitcapacitors, Cunit. For example, in one embodiment the system may storeand retrieve a predefined maximum length along a first dimension. Invarious embodiments, the system may configure a first lengthcorresponding to a first dimension of the N unit capacitors to be lessthan or equal to a predefined maximum length along the first dimension.Further, the system may determine a second length corresponding to asecond dimension of the N unit capacitors based on at least the unitcapacitance, Cunit, and the first length. In one example embodiment, aunit capacitor, Cunit, in a circuit schematic may have a lengthattribute, Lseg, and width attribute, Wseg. Thus, the first length alongthe first dimension may correspond to the length attribute, Lseg, andthe second length along the second dimension may correspond to the widthattribute, Wseg. Accordingly, in one embodiment, Lseg may be set to avalue less than or equal to a maximum length, Lmax, and the system maydetermine Wseg to obtain the unit capacitor value Cunit. For example, inone embodiment Lseg may initially be set to the predefined maximumlength, Lmax. Wseg may be determined as follows:

Wseg=Cunit/[Lmax*(capacitance/um²)]

Features and advantages of some embodiments may include the ability toset an aspect ratio of capacitors. A configurable (or programmable)aspect ratio may be advantageous for optimizing layout and reducingcircuit area, for example. In one embodiment, the ratio of lengths alongeach dimension of the unit capacitor may be configured to produce apredefined aspect ratio (e.g., Wseg/Lseg). For example, once Wseg andLseg are determined at 4015, the system may compare the aspect ratio ofthe calculated Wseg/Lseg to a predefined aspect ratio, which may bedefined in code or retrieved from memory, for example. If the aspectratio matches at 4016 (e.g., within a specified tolerance), then thesystem generates a netlist specification for the unit capacitors at4017. However, if the aspect ratio does not match at 4016, then thesystem may adjust one of the dimensions (e.g., Wseg or Lseg) at 4018.For example, if the initial Lseg is set to Lmax, then Lseg may beincrementally reduced to produce an adjusted Wseg until an aspect ratiomeets the predetermined aspect ratio, for example. Finally, at 4017,information specifying the capacitor may be encoded in an identifier,such as a name. For example, the name of N capacitor components in thecircuit specification netlist configuring the capacitors in series orparallel may be CAP_<cap_type>_<Lseg>_<Wseg>. Each capacitor symbol maybe placed in a symbol for the composite capacitor namedCAP_<cap_type>_<Lseg>_<Wseg>_N, where “cap_type” is the capacitor type(e.g., “mim”), Lseg is the length attribute, Wseg is the widthattribute, and N is the number of capacitors used to create Ctotal, forexample. In various embodiments, the components in transistor levelschematics (including capacitors) may be generated as described above inconnection with FIGS. 31 and 32, for example.

Example Embodiments for Generating Capacitors

FIGS. 41A-C illustrate an example capacitor schematic generationaccording to an embodiment. FIG. 41A illustrates a capacitor schematiccomprising P symbols 4101A-4101P coupled together in parallel. Thesymbols may be coupled together via pins, for example. FIG. 41Billustrates a capacitor schematic comprising S symbols 4102A-41025coupled together in series. FIG. 41C illustrates an example symbol 4120including symbol pins 4121 and 4122. Symbol 4120 comprises a transistorlevel unit capacitor 4123, Cunit, having a first terminal 4124 and asecond terminal 4125. As mentioned above, in some embodiments, symbol4120 may be generated without a unit capacitor segment (e.g., as anempty symbol). Unit capacitor segment, Cunit, may have been inserted insymbol 4120 by software. The software may further connect capacitorterminal 4124 to symbol pin 4121 and connect capacitor terminal 4125 tosymbol pin 4122, for example. In one embodiment, the software maycomprise scripts that execute in an electronic design automation (EDA)software system, for example (e.g., Skill scripts in Cadence®), whichdetect an empty symbol instance resulting from a schematic generated inresponse to receiving a netlist, for example, and insert the capacitorautomatically. The scripts may further set attributes of the insertedcapacitor using the values generated as described above.

The combined capacitance of the capacitor segments in the symbols4101A-P or 4102A-S may produce the total capacitor value to begenerated, Ctotal. As mentioned above, in some embodiments, the unitcapacitors may have the same capacitor values, Cunit, the samepredefined length, Lseg, and the same predefined width, Wseg, forexample. Calculating lengths and widths for the unit capacitors based onpredefined parameters (e.g., one or more of Cmin, Cmax, Lmax, or aprogrammed aspect ratio) may advantageously allow efficient automatedlayout.

FIG. 42 illustrates example capacitor layouts according to variousembodiments. Example layouts 4210-4214 illustrate how capacitor valuesmay be automatically generated in response to different values of Ctotal(a capacitor to be generated). Generator 4201 may receive a plurality ofcapacitor values Ctotal1-Ctotal5 and generate layouts 4210-4214comprising one or more capacitor layout segments (e.g., 4210 or4220/4221) having lengths along the x-axis and y-axis equal to theattributes for Lseg and Wseg, for example. Capacitor layout segments ineach capacitor layout may correspond to a plurality of polygons, forexample. The polygons for each set of capacitor layout segment may havedifferent lengths and widths. Capacitor layout segments may be generatedfrom a capacitor schematic, such as schematic 4110 in FIG. 41A, forexample. Accordingly, in this example, the capacitor segments in symbolsgenerate corresponding polygons for capacitor layouts 4210-4214. Inother embodiments it is possible that a single capacitor in a schematicmay be converted into multiple polygons and automatically placed asdescribed herein, for example. In this example, each of the capacitorlayout segments may be laid out in a one (1) or two (2) dimensionalarray (e.g., side by side along a length or width) and coupled together(e.g., using metal or polySi) in series and/or in parallel (e.g., asillustrated in schematics shown in FIG. 41A or 41B) so the totalcapacitance is Ctotal. For example, capacitor layout segments may bearranged in a row up to a maximum distance, and then a new row may bestarted. Or capacitor layout segments may be configured in an N×M array,for example. Capacitor layout segments may be placed above portions ofother circuitry. Capacitor layout segments may be implemented usingmetalization layers (e.g., a mim capacitor using metal 3 (M3) and a mimlayer between M3 and M4) as is known by those skilled in the art.

As illustrated in layouts 4210-4214 a different number of capacitorlayout segments having different sizes may be used to produce differentvalues of Ctotal. Some values of Ctotal may result in fewer capacitorlayout segments, while other values of Ctotal may result in morecapacitor layout segments. Advantageously, the number of capacitorlayout segments used across different designs for different values ofCtotal may vary by placing the capacitor layout segments side-by-side(e.g., along their lengths) and coupling them together according todifferent numbers of series and/or parallel combinations, as shown. Asdescribed in more detail below, layout placement instructions may placethe capacitor layout segments in parallel along their lengths in an areareserved for the capacitor layout segments (e.g., above an area for asub-circuit using metalizations, for example.

FIG. 43 illustrates generating a capacitor specified in a user interfaceaccording to an embodiment. In this example, the total capacitance isreceived as a parameter corresponding to a capacitor functional circuitcomponent. For instance, a user may design a circuit in a design userinterface (UI) 4301 (aka a front end). The design UI 4301 may perform ahigh-level behavioral simulation of the circuit, for example, ratherthan a transistor level simulation. In this example, the user hasselected a first functional circuit component 4302 (e.g., a comparatoror amplifier) and a capacitor functional circuit component 4303.Components 4302 and 4303 are coupled together in the design interface. Auser may specify a capacitor value for capacitor component 4303 in userinterface 4304, for example, and input a desired value for Ctotal. Inthis example, Ctotal may be within a predefined range from a minimumselectable UI value, Cmin=100 femtofarads (fF), to a maximum selectableUI value, Cmax=50 picofarads (pF). Functional circuit component 4302 mayalso have user selected parameters, for example, as described above.Parameters from the UI 4301 may be used to generate a schematic 4310.The schematic may include one or more sub-circuits 4311 selected basedon the parameters received for functional circuit component 4302.Additionally, the schematic may include a capacitor schematic for Ctotal4312. The capacitor schematic 4312 may comprise a plurality of symbols,such as symbol 4314, configured in series and/or parallel that eachinclude a unit capacitor (Cunit), for example. The combined schematicmay approximately produce the value of Ctotal entered by the user (e.g.,to within a degree of error acceptable for the proper function of thecircuit).

FIG. 43 further illustrates an example layout of a capacitor specifiedin a user interface. In this example, parameters for functional circuitcomponent 4302 are used to generate sub-circuit layouts 4320. The userentered value for capacitor component 4303 (e.g., Ctotal) is used togenerate and place a plurality of capacitor layout segments (e.g.,capacitor layout segment 4321 a) that each have the same unitcapacitance, Cunit, segment length, Lseg, and segment width, Wseg, toform, in combination, the value of Ctotal 4321, for example. As the userentered value of Ctotal changes, the number of capacitor layout segments4321 and dimensions of such segments (Wseg, Lseg) used to produce Ctotalchanges. In this example, capacitor layout segments are configured in a2-dimensional array spaced apart by an offset and configured abovesub-circuit layout 4320 (e.g., using different metalization layers forthe capacitor plates).

In some embodiments, total capacitance may be produced based oninformation specifying a circuit to be generated. For instance, FIG. 44illustrates generating a capacitor based on circuit parameters specifiedin a user interface according to an embodiment. Total capacitance may beproduced based on a predefined circuit model for the circuit to begenerated. For example, one or more capacitor values, Ctotal, may bereceived as a result of a calculation by the generator software. In thisexample, a user may design a circuit in design user interface (UI) 4401that includes functional circuit component 4402 (e.g., here, a delaycircuit) and one or more other functional circuit components (FCC) 4403and 4404. Components 4402, 4403, and 4404 are coupled together in thedesign interface (e.g., the delay circuit receives a signal from FCC4403 and outputs a signal to FCC 4404). The user may specify parametersfor each functional circuit component. Parameters for component 4402 maybe used to calculate one or more capacitor values. In this example, auser may enter a desired time delay for the delay circuit 4402 in userinterface 4405, for example. The user may input a desired value for thetime delay in a text field, for example. In this example, the time delaymay be within a predefined range from a minimum value, delay_min=0.5 us,to a maximum value, delay_max=200 us. Other functional circuitcomponents 4403/4404 may also have user selected parameters, forexample. Parameters from the UI 4401 may be used to generate atransistor level schematic, which may include a delay schematic 4410 andsub-circuit schematics 4411 and 4412 for the other functional circuitcomponents 4403 and 4404, respectively. Additionally, the delayschematic 4410 may include a capacitor schematic 4413 for Ctotal, a biascurrent schematic (ibias) 4414, and schematics for other circuitry (notshown). Capacitor 4413 and ibias 4414 are illustrated here as symbols,but it is to be understood that a transistor level schematic for ibiaswould include a configuration of transistor level components (e.g.,n-type or p-type transistors, resistors, or capacitors). The capacitorschematic 4413 may comprise a plurality of symbols, as illustrated inFIG. 41A or 41B, configured in series and/or parallel that each includea unit capacitor, for example. The combined schematic may produceapproximately the value of Ctotal calculated by the generator software(e.g., to within a degree of error acceptable for the proper function ofthe circuit).

The following example illustrates one capacitor calculation by generatorsoftware in response to receiving parameters for a delay circuitfunctional circuit component 4402. If a user enters a value of delaybetween delay_min and delay_max, Ctotal may be calculated (e.g., using acircuit model for the delay circuit). In this example, the delay may bebased on the slope of a voltage ramp signal generated by Ibias intoCtotal. Waveforms for such a circuit are illustrated at 4406. CurrentIbias into Ctotal may produce a voltage slope at node A. The voltageslope may start when an input IN is received, for example. When thevoltage slope reaches a particular value, the output is triggered (othercircuitry not shown). For a shorter delay, a steeper voltage slope atnode A may be used. For a longer delay, the voltage slope may be lower.The voltage slope is given by the following equation:

Voltage slope=dv/dt=ibias/Ctotal, or

Ctotal=(Ibias*delay)/Vth

where Vth may be the threshold voltage at node A where the output istriggered, for example. Thus, the above equation for Ctotal is anexample circuit model that may be used to determine Ctotal based onvalues of delay received as parameters. Accordingly, a user may enterone value (e.g., of a continuous range of values) as a parameter, andgenerator software may convert the value into a capacitor value, Ctotal,to be implemented as a schematic, layout, or both, for example. Asdescribed above, the generator software may access predefined physicaldimensions for a unit capacitor and convert Ctotal into a series and/orparallel combination of capacitors. The schematic for Ctotal may begenerated as described above and coupled to a schematic for Ibias 4414(and other delay circuit schematics) to produce delay circuit schematic4410, for example. While calculating capacitor values is illustratedhere in the context of a delay circuit, it is to be understood thatcapacitor values may be calculated for a wide range of other analog ormixed signal circuits by those skilled in the art of analog/mixed signalcircuit design.

FIG. 44 further illustrates an example layout of a capacitor determinedfrom parameters according to an embodiment. One or more functionalcircuit components 4402-4404 and corresponding parameters may result inlayouts 4420-4422. Delay 4402 and parameters entered for the delay(e.g., 0.5 us to 200 us) may result in layout 4420 corresponding tosub-circuits for Ibias 4414 and other delay sub-circuits (not shown),for example, and a layout of capacitor layout segments 4423 for thecalculated value of Ctotal. As described above, each capacitor layoutsegment (e.g., capacitor layout segment 4423 a) may have the same unitcapacitor value, Cunit, length, Lseg, and Width, Wseg, for example,which combine to form Ctotal. Accordingly, as the value entered by auser for a particular circuit parameter changes across a continuousrange of values, a calculated capacitor value changes, and the resultingnumber of capacitor layout segments to produce the calculated capacitorvalue changes. Such example embodiments may advantageously allowgenerator software to receive parameters across a continuous range ofvalues (e.g., from a user) and automatically generate analog circuitschematics and/or analog circuit layouts to implement the specifiedcircuit behavior, for example.

Automatically Generating Transistors

Features and advantages of various embodiments of the present disclosuremay further include automated generation of transistors, such as fieldeffect transistors (FETs), for example.

FIG. 45 illustrates automated generation of transistors, such as fieldeffect transistors (FET), for example, according to an embodiment. Inthis example, generator software 4504 may receive information specifyinga transistor to be generated as parameters 4502. The transistor to begenerated may be a signal FET or power FET, for example. A power FETrefers to a transistor configure to deliver power, typically in the formof large currents, whereas a signal FET is a transistor configured tocouple signals between various nodes of the circuit. In someembodiments, parameters may be generated from a user configured FETfunctional circuit component 4501, where a user enters the featuresdesired for the FET and such features are embodied in parameters 4502and sent to generator software 4504. Generator software 4504 mayautomatically generate transistors having different dopant types (e.g.,n-type or p-type), maximum voltages (e.g., maximum drain to sourcevoltage, Vds_max, or maximum gate to source voltages, Vgs_max), forexample. Various embodiments described herein may automatically generatetransistors with replica devices and/or Kelvin connections, for example.Based on the received information specifying the transistor to begenerated, generator software 4504 may produce a circuit specification4505. Circuit specification 4505 may be a netlist, for example,specifying one or more of a particular transistor (e.g., n-type, p-type,Vds_max, Vgs_max), and may further specify additional connections andelements to form a replica transistor or Kelvin connections, forexample.

Circuit specification 4505 may be used to generate a transistorschematic. As mentioned above, in some embodiments circuit specification4505 may be received by Electronic Design Automation (EDA) software andconverted into a transistor level schematic, which may be simulated atthe device level, for example. In this example, N different combinationsof parameter values (e.g., params_1, . . . , params_N, where N is aninteger) may result in N different FET transistor schematics 4530-4532.Transistor schematics 4530-4532 may be converted to FET layouts4540-4542.

FIG. 46 illustrates a flow chart for automatically generating atransistor according to an embodiment. At 4601, information specifyingthe transistor to be generated is received (e.g., by generator software104). At 4602, transistor attributes may be determined from theinformation. Attributes may include n-type or p-type devices, maximumvoltages, replica devices, or Kelvin connections as described above. Insome embodiments, a user may specify an on resistance (e.g., drain tosource ON resistance, “Rds_on” or just “Ron”) and other attributes maybe determined automatically, such as a ratio of width divided by length(W/L), number of fingers, and number of device cells, for example, asdescribed in more detail below. In some embodiments, known layoutparameters for particular transistor configurations may be retrieved andused in determining one or more attributes (e.g., gate width or aspectratio) of the transistor to be generated, for example. At 4603, acircuit specification is generated. The circuit specification mayinclude one or more devices configured to produce the specifiedtransistor to be generated. At 4604, a transistor level schematic isgenerated from the circuit specification, and at 4605 a layout for thespecified transistor is generated.

FIGS. 47A-47E illustrate example transistors generated by differentparameters according to various embodiments. In FIG. 47A, a first set ofparameters (params_1) results in a circuit specification comprising oneFET device M1 coupled to nodes a, b, and c. Device M1 may further beassociated with an n-type 6 volt device, for example. The receivedparameters may include Rds_on, for example, which may be used todetermine a first gate width, w=W1, gate length, l=L1, a particularnumber of fingers, F=F1, and a multiplier attribute (M) (here, M=1),where W1 and L1 are values (e.g., W1=2.8 um and L1=200.nm) and F1 is aninteger (e.g., F1=2), for example. Multiplier attribute (M) is onetechnique that may be used to specify a number of device cells, forexample. Generally, in the following examples, W<i>, L<i>, and F<i> inthe example transistors below in FIGS. 47B-47E and 48A-48B representdifferent values for width, length, and fingers, respectively. In thisexample, circuit specification parameters are used to generate atransistor level schematic for an NMOS transistor 4701. The circuitspecification may be used to select a 6 v n-type transistor 4701 (e.g.,from a library of transistors), which is then configured with attributesincluding gate width, w=W1, gate length, l=L1, number of fingers, F=F1,and a multiplier attribute, M=1, for example. Transistor 4701 may beplaced in a schematic and coupled to other circuitry as describedherein.

FIG. 47B illustrates a second set of parameters (params_2), which resultin a circuit specification comprising one FET device M1 coupled to nodesa, b, and c. Device M1 may also be associated with an n-type Vds_max=6volt device, for example. The received parameters may include adifferent Rds_on, for example, which may be used to determine a secondgate width, w=W2, gate length, l=L1 (e.g., which may be the same minimumgate length), the same number of fingers F=F1, and a multiplierattribute, M=1. The circuit specification may be used to select a 6 vn-type transistor 4702, which is then configured with attributes andplaced in a transistor level schematic as shown in FIG. 47B anddescribed above.

FIG. 47C illustrates a third set of parameters (params_3), which resultin a circuit specification comprising one FET device M1 coupled to nodesa, b, and c. Device M1 may also be associated with an n-type Vds_max=6volt device, for example. The received parameters may include a yetanother value for Rds_on, for example, which may be used to determine athird gate width, w=W3, the same gate length, l=L1, a different numberof fingers, F=F2, and a multiplier attribute, M=1. The circuitspecification may be used to select a 6 v n-type transistor 4703, whichis then configured with attributes and placed in a transistor levelschematic as shown in FIG. 47C and described above.

FIG. 47D illustrates a fourth set of parameters (params_4), whichproduce a specification for device M4 associated with an n-typeVds_max=6 volt device. The received parameters may include a yet anothervalue for Rds_on, for example, which may be used to determine a fourthgate width, w=W4, the same gate length, l=L1, a same number of fingers,F=F2, as device M3, and a multiplier attribute, M=1. The circuitspecification may be used to select a 6 v n-type transistor 4704, whichis then configured with attributes and placed in a transistor levelschematic as shown in FIG. 47D and described above.

From the above examples it can be seen that a wide range of devices witha range of combinations of widths and fingers may be generated based ondifferent parameter values.

FIG. 47E illustrates another example transistor generated from a fifthset of parameter values (params_5a). In some embodiments with largergate widths, it may be desirable to generate a plurality of devicecells. In one example embodiment, params_5a may produce a circuitspecification for an n-type MOS transistor with Vds_max=6 volts, a gatewidth, w=W4 (e.g., the transistor unit gate width, Wunit), gate length,l=L1, number of fingers, F=F3, and a multiplier attribute (M=P1, whereP1 is a integer value greater than 1 specifying a number of devicecells). When the circuit specification is converted to a transistorschematic, the result is transistor 4705 having width W4 and F3 numberof fingers configured in parallel, and multiplier, M=P1. The drain iscoupled to node a, the gate is coupled to node b, and the source iscoupled to node c.

FIG. 47F illustrates another set of parameters (params_5b), which mayresult in a circuit specification for a p-type MOS transistor having agate width W1, length L1, number of fingers F2, and multiplier M=P1. Thecircuit specification is used to generate a transistor level schematicfor PMOS transistor 4706 having attributes as specified in the circuitspecification as shown in FIG. 47F.

FIG. 48A illustrates another example transistor generated from anotherset of parameter values (e.g., params_6). FIG. 48A illustrates analternative technique for generating multiple device cells. Forinstance, rather than set M>1 in a single transistor's attributes toobtain multiple device cells, a transistor to be generated based onparam_6 may be implemented as P (an integer) transistors in parallel.For example, a circuit specification may specify P MOSFET transistors,M1, M2, . . . , MP coupled to nodes a, b, and c. The transistors may ben-type, Vds_max=6 v, unit gate width w=W6, gate length l=L1, and numberof fingers, F=F6. Multiplier M attribute of each transistor is set to 1in this example. When the circuit specification is converted to atransistor level schematic, P (an integer) n-type MOS transistors4820(1)-4820(P) having a Vds_max=6 v, width=W6, length=L1, number offingers F=F6, and multiplier M=1 are selected and configured inparallel. For each device, the drains are coupled to node a, the gatesare coupled to node b, and the sources are coupled to node c. Eachtransistor may be configured in one of symbols 4810(1)-4810(P), forexample, and symbols 4810(A)-4810(P) may be embedded in symbol 4800 forthe composite transistor having the specified characteristics, forexample.

FIG. 48B illustrates another example transistor generated from anotherset of parameter values (e.g., params_7). In this example, params_7result in a circuit specification specifying P (an integer) p-typeMOSFET transistors, M1, M2, . . . , MP coupled to nodes a, b, and c withVds_max=12 v, unit gate width, w=W7, gate length, l=L1, number offingers, F=F7, and the multiplier attribute M=1. When the circuitspecification is converted to a transistor schematic, P (an integer)Vds_max=12 v p-type MOS transistors 4821(1)-4821(P) are selected andconfigured in parallel with attribute values set to width w=W7, lengthl=L1, number of fingers F=F7, and M=1. For each device 4821(1)-(P), thedrains are coupled to node c, the gates are coupled to node b, and thesources are coupled to node a. Each transistor may be configured in oneof symbols 4811(1)-4811(P), for example, and symbols 4811(1)-4811(P) maybe embedded in symbol 4801 for the composite transistor having thespecified characteristics, for example.

FIG. 49A illustrates an example method of generating a transistoraccording to another embodiment. At 4901, information specifying atransistor to be generated is received by generator software executingon a computer system. The information may comprise parameters describingfeatures of an MOS transistor to be generated, such as n-type or p-type,Vds_max (e.g., 2 v, 6 v, 12 v, 20 v, 24 v, 30 v), Vgs_max (e.g., 2 v, 6v), on resistance (Ron), Kelvin (Yes/No), Replica (Yes/No), or Test(Yes/No), for example. At 4902, a total width (Wtotal) for thetransistor to be generated is determined. The gate length may beretrieved (e.g., from memory, a database, or a file), for example. Oneexample technique for determining a width of a transistor is describedbelow in FIG. 49B.

In one example embodiment, a transistor may be generated having a unitwidth, Wunit, where the transistor may have multiple fingers and/or anumber of device cells (P) (e.g., based on multiplier attribute M orparallel devices) as described above. The unit width, Wunit, number offingers, F, and number of device cells, P, configured in parallel may bedetermined at 4903. For example, in one embodiment, a maximum width(Wmax), maximum number of fingers (Fmax) and number of device cells (P)may be determined from the total width. For instance, if the total widthis 200,000 um, Fmax=120, and Wmax=200 um, then P=9 would produce thefollowing number of fingers (F):

F=Wtotal/(Wmax*P)=200 Kum/(200 um*9)=111

Generator software may successively determine different values F acrossdifferent values of P until a value of F and P is found that results inF<Fmax, for example. In one particular example embodiment, P is set to aperfect square (i.e., the square root of P is a positive integer), whichadvantageously produces an N×N array of device cells in a layout asdescribed in more detail below.

Features and advantages of the present disclosure may further includesetting a unit width such that a plurality of transistor device cellshave a rectangular area. The ratio of the x-dimension and y-dimension(e.g., X/Y or Y/X, where X is the length of a cell in the x-directionand Y is the length of the cell in the y-dimension) may be between about⅔rds and about ¾ths, for example, which produces an rectangular layoutstructure advantageous for positioning layout structures and optimizingarea of a semiconductor circuit. In one example embodiment, X/Y=0.75. Yand X of the transistor may be determined from layout parameters, whereX is a function of the number of fingers, X=f₁(F), and Y is a functionof the unit width, Y=f₂(Wunit), for example. In this example, since thenumber of fingers, F, may be obtained from Wtotal, Wmax, and P (above),the unit width, Wunit, may be expressed as follows:

Wunit=f ₂ ⁻¹(Y)=f ₂ ⁻¹(X/0.75)=f ₂ ⁻¹(f ₁(F)/0.75)

Where X=f₁(F) and Y=f₂(Wunit) are predefined functions based onpredefined transistor layout parameters, which may be different fordifferent transistors. Accordingly, generator software executing on acomputer system may select different equations for X=f₁(F) andY=f₂(Wunit) based on the information specifying the transistor to begenerated (e.g., based on parameters for n-type or p-type, Vds_max,Vgs_max, or the particular transistors from a library of transistorsused in a particular circuit specification). Example equations X=f₁(F)and Y=f₂(Wunit) for n-type and p-type transistors are illustrated below.

Accordingly, the above techniques may be used to obtain attributes of atransistor to be generated—W, L, and F. The number of device cells, P,may be configured either as M=P or as P transistors configured inparallel, for example. Thus, a circuit specification may be generated at4904. The circuit specification may be used to generate a schematic at4905, and a layout is generated from the circuit schematic at 4906.

Features and advantages of the present disclosure include receiving avalue for on resistance (Ron) and using Ron to determine gate width(e.g., Wtotal) for a transistor. In one example embodiment, therelationship between Ron and Wtotal may be determined by generatingsimulation data for different values of gate-to-source voltage (Vgs),gate width (w), and temperature (T), for example, versus Ron for aparticular transistor (e.g., a Vds_max=6 v NMOS or a Vds=24 v PMOS),which may produce data points corresponding to a particular curve forthe particular transistor. An equation for the curve may be obtain by acurve fitting algorithm, such as a regression algorithm, for example. Inone embodiment, coefficients for the following curve may be obtainedfrom regression of a data set comprising Ron values across differentvalues for Vgs, w, and T:

Ron=Vgs ^(k1) *w ^(k2)*T^(k3) *C.

The width of a transistor needed for a given Ron may be obtained asfollows:

${Wtotal} = \left\lbrack \frac{Ron}{{Vgs}^{k\; 1}w^{k\; 2}e^{2}} \right\rbrack^{1\text{/}k\; 2}$

The above equations may use a predefined gate length, for example. Inone embodiment, a width of one device cell (e.g., M=1) may be used(e.g., w=200 um) and the data set may use different values of M (e.g.,sweep Vgs, M, and T vs. Ron).

FIG. 49B illustrates an example method for converting specified valuesof on resistance (Ron) into gate widths (e.g., Wtotal) according to anembodiment. At 4910, data sets are generated for different values ofgate width (w) resulting in different values of Ron for a plurality oftransistor types. For example, various embodiments may determine valuesof Ron across gate widths and other transistor operating parameters,such as gate-to-source voltage (Vgs) and/or temperature (T), forexample. Accordingly, different transistor types may have differentcorresponding data sets. For example, different transistor types (e.g.,p-type, n-type, signal FET, or power FET) with different drain-to-sourcemaximum voltages (Vds_max) and different gate-to-source maximum voltages(Vgs_max) may have different corresponding data sets. At 4911, aplurality of regression coefficients are generated for each transistortype. In one example embodiment mentioned above, the regressioncoefficients may comprise a Vgs coefficient (k1), a gate widthcoefficient (k2), a temperature coefficient (k3), and a constant (C). Insome embodiments, the same regression equations and correspondingcoefficients may be used across a plurality of transistor types, forexample. At 4912, a value of Ron is received with information specifyinga transistor type. For example, a generator software component mayreceive a value for Ron, a value for Vds_max, and a value for Vgs_max.The values for Vds_max, and Vgs_max may be used to select a particulartransistor type (e.g., a 6 v NMOS transistor) from a library oftransistors, which may have Ron v. width data sets and coefficients asdescribe above. At 4913, regression coefficients may be selected basedon the specified transistor type. At 4914, a transistor gate width maybe determined based on the received value of Ron and the selectedregression coefficients. The resulting gate width may be a total gatewidth, Wtotal, for example.

FIG. 50 illustrates generating a transistor with a replica device 5001according to an embodiment. In this example, values for parameters(e.g., params_8) may specify that the transistor to be generated is toinclude a replica transistor (e.g., Replica=Yes). In this example,generator receives params_8 and generates a circuit specificationcomprising one Vds_max=6 v NMOS transistor 5002 (e.g., “n_type_6 v”),M1, having a width w=W4, length l=L1, number of fingers F=F3, andmultiplier M=1. The circuit specification configures M1 to have a draincoupled to node a, a gate coupled to node b and a source coupled to nodec. When a replica device is to be generate, the circuit specificationfurther includes a replica transistor, MR, 5001 which in this example isthe same device type as M1 (Vds_max=6 v NMOS, here, “n_type_6 v”). Thelength may be the same (l=L1) but the width and number of fingers may bedifferent. In this example, the width is w=WR, number of fingers F=1,and multiplier M=1. In one example embodiment, the parameters mayspecify a replica gain. Accordingly, the generator may set a value forthe width of the replica transistor to obtain the gain specified by theparameters, for example. For instance, if the replica gain is set to1000:1, the ratio of the total width of M1 to the width of MR,Wtotal/Wreplica=1000/1.

FIG. 51 illustrates generating a transistor with a Kelvin connectionaccording to an embodiment. In this example, values for parameters(e.g., params_9) may specify that the transistor to be generated is toinclude a Kelvin connection (e.g., Kelvin=Yes). In this example,generator receives params_9 and generates a circuit specificationcomprising one Vds_max=6 v NMOS transistor (e.g., “n_type_6 v”), M1,having a width w=W4, length l=L1, number of fingers F=F3, and multiplierM=1. The circuit specification configures M1 to have a drain coupled tonode D (e.g., (D)rain), a gate coupled to node G (e.g., (G)ate) and asource coupled to node S (e.g., (S)ource). Additionally, the circuitspecification is configured to produce additional terminals (e.g.,(D)rain_(K)elvin, “DK” and/or (S)ource_(K)elvin, “SK”) coupled to thedrain and/or source along secondary conductive paths from points in theintegrated circuit proximate to the drain and/or source, respectively.The secondary conductive paths may draw a very low current relative tocurrent flowing along a primary conductive path (e.g., a path betweenthe drain and circuitry connected to the D terminal or a path betweenthe source and circuitry connected to the S terminal). Accordingly, theDK and SK terminals may sense voltage while minimizing current relatedvoltage drops experienced along the primary conductive path between thedrain and/or source and the S and D terminals, for example. In oneexample embodiment, generator may further include a resistor in thesecondary conductive path (e.g., to further reduce current flowing inthe secondary conductive path). Accordingly, in this example, thecircuit specification includes a first resistor, R1=100 mOhms, coupledbetween nodes D and DK, and a second resistor, R2=100 mOhms, coupledbetween nodes S and SK. The circuit specification may be converted intotransistor schematic 5100 including NMOS transistor 5101 and resistors5102 and 5103 configured as shown. A layout may be generated from thetransistor schematic, where the secondary path is coupled to thetransistor in close proximity to either the drain or source, forexample.

FIG. 52A illustrates an example of automatically generating layouts of atransistor according to an embodiment. FIG. 52A illustrates alternativelayouts 5200(1)-5200(N) of a transistor with different numbers offingers, F. Transistor layout 5200(1) includes two (2) fingers, which inthis case is two gates 5201 and 5202 having width, w. Transistor layout5200(1) further includes two (2) sources 5203 and 5204 and a singledrain 5205. FIG. 52A illustrates that as the number of fingers changes,the x-dimension (e.g., horizontal) length of the transistor changes, butthe y-dimension (e.g., vertical) length may not change. The total y-axislength of a transistor may be set by the transistor gate width, w, andlayout structures above and below opposite edges of the gate, source,and/or drain structures. In this example, lengths C (above thegate/source/drain) and D (below the gate/source/drain), together withwidth, w, set the total y-axis length, Y. The number of fingers andother x-axis lengths may set the total x-axis length, X.

For instance, if F=4 fingers, an additional gate, drain, gate, andsource segment may be added, thereby changing the length along thex-axis, but the length along the y-axis remains the same. For instance,the x-axis length may be a function of a first length, A, a secondlength (or pitch), p, and a third length, B (e.g.,X=[(F/2)*(p)itch]+xoffset, where xoffset=A+B). The y-axis length may bea function of the unit gate width, Wunit, and lengths C and D (e.g.,Y=w+yoffset, where yoffset=C+D) In one example embodiment, layoutparameters for a Vds_max=6 v NMOS transistor may be: (p)itch=3.3 um,xoffset=2.33 um, and yoffset=8.33 um. As the Vds_max increases, thexoffset and yoffset may be the same, but the pitch may increase. Forinstance, the following are example (Vds_max, P(pitch)) tuples for otherNMOS transistors: [(12 v, 4.1 um), (20 v, 4.9 um), (24 v, 5.3 um), (40v, 7.9 um)]. Length A may include various layout structures associatedwith a first edge of the transistor, such as bulk material, a firstsource configured along the first edge of the transistor, and otherlayout structures, for example. Length B may include various layoutstructures configured along a second edge of the transistor, such asbulk material and other layout structures. Lengths C and D may includevarious layout structures such as bulk materials and process specificsetbacks, for example. Length (p)itch may include layout structures thatrepeat as additional figures are included in the circuit. For instance,when F=4, an additional segment 5210 may be included to produce layout5200(2), which comprises a second gate/drain/gate/source. The x-axislength increases by another amount p, but A and B may remain constant.As illustrated in layout 5200(N), for F=N, A and B remain constant andthere are N (p)itch lengths. It is to be understood that the layoutstructures may be different for different transistors, and thus, A, B,(p)itch, xoffset, and yoffset may be different for differenttransistors. However, the same type of transistors (e.g., n-type MOSFET,Vds_max=6 v, Vgs_max=6 v) may have the same layout structures and valuesfor A, B, (p)itch, xoffset, and yoffset for different instances of thetransistor. The example of FIG. 52A shows variation in x-axis lengthversus F for one y-axis length, which corresponds to the same gatewidth, w, for layouts 5200(1)-(N), for example.

FIG. 52A is useful in illustrating how attributes of a transistor in atransistor level schematic may be determined. As the unit width andnumber of fingers changes, different numbers of device cells (P) (e.g.,5200(1)-(N)) may be used to form a composite transistor. In one exampleembodiment, a total width, Wtotal, calculated from a specified Ron maybe used to determine a number of fingers, F, for a given maximum unitwidth, Wunit_max, a maximum number of fingers, Fmax, and P (number ofdevice cells). For example, a number of fingers, F, may be calculatedbased on Wtotal, P=1, Fmax, and Wunit_max. If no solution is obtainable,then P may be increased. The number of device cells may be iterativelyincreased to successively larger number of device cells until a solutionis found for F. The number of device cells may be limited to valuescapable of forming a two-dimensional array having a combined aspectratio between 0.5 and 1 (e.g., rectangular). In one embodiment, thenumber of device cells may advantageously set to a perfect square (e.g.,1, 4, 9, 16, . . . ). Once the number of fingers F (F<Fmax) and numberof device cells P are found for a given Wtotal and Wunit_max, the finalwidth of each transistor may be determined for a specified ratio (X/Y orY/X), for example.

In one embodiment, the unit gate width (Wunit), number of fingers (F),and the number of device cells (P) may be determined based on a maximumwidth and a maximum number of fingers. The maximum width (Wmax) andmaximum number of fingers (Fmax) may be predefined values included ingenerator software or stored and received from an external storagelocation (e.g., a file or database). In one embodiment, generatorsoftware may determine the number of device cells (P) and the number offingers (F) by increasing the number of device cells (P) across aplurality of increasing values to determine the number of fingers (F)obtainable based on each successively increasing current number ofdevice cells (P), the maximum width (Wmax), and the maximum number offingers (Fmax). This approach may advantageously result in the fewestnumber of device cells (P) and reduced circuit area.

For example, starting with a total width (Wtotal), generator softwaremay iteratively increase the number of device cells (P) across aplurality of values. For the case of P=perfect square, P may beiteratively set to 1, 4, 9, etc. . . . . At each current value of P, thesystem may determine if the total width (Wtotal) is obtainable from acurrent value of P, the maximum width (Wmax), and the maximum number offingers (Fmax). For example, for Wtotal=200,000 um, Wmax=200 um, andFmax=120, P=1 results in F=Wtotal/(Wmax*P)=1000, which is greater thanFmax. Thus, the total width is not obtainable from the current value ofP, Wmax, and Fmax. Accordingly, P is incremented to the next value(here, 4). For P=4, F=250, which is still greater than Fmax. Thus, P isincremented to the next value (here, 9). For P=9, F=111, which is lessthan Fmax. Accordingly, Wtotal=200,000 um is obtainable from P=9, F=111,and Wmax=200 um, and these values may be used to set the transistorattributes.

Features and advantages of the present disclosure may further includesetting transistor attributes based on one or more layout parameters.For example, as mentioned above, a configurable aspect ratio of thedevice cells may be used to set the x-axis and y-axis lengths of thedevice cells, which may set a unit gate width, Wunit, for example. Forinstance, a length X along the x-dimension of the device cell may bedetermined based on the number of fingers (F) and predefined offsetvalues (e.g., layout parameters for P(pitch) andxoffset)−X=((F/2)*pitch)+xoffset. As mentioned above, predefined offsetvalues may be selected based on a transistor type (e.g., one or more ofa dopant type, p-/n-type, Vdsmax, Vgsmax), and different transistortypes may have different layout parameter values for pitch, xoffset, andyoffset, for example. Next, a length Y along the y-dimension of thedevice cell may be determined based on the length X and the aspect ratio(Y=AR*X, where AR is a programmable aspect ratio that may be encoded inthe generator software or retrieved from an external storage location).Once the length Y of the cell is determined, a final unit gate width,Wunit, may be determined based on the length Y and a predefined offsetvalue, yoffset−Y=Wunit+yoffset. In some embodiments, generator softwaremay compare an area calculated based on the total width and length to anarea calculated based on the final unit gate width (Wunit), number ofdevice cells (P), and number of fingers (F). If the areas are within anacceptable margin of error, the design and various layout parameters maybe validated, for example.

FIG. 52B illustrates that an aspect ratio of a transistor layout maychange as the number of fingers increases. In one example embodiment,changing the number of fingers may produce a change in the transistordevice cell width to maintain an aspect ratio (e.g., either constant orwithin a range). Here, a device cell layout instance for a first devicecell 5250 is generated having F=F1 fingers and a width w=W1 resulting ina Y/X ratio of 0.75. Another device cell layout instance 5251 may begenerated having fingers F=F2 and a width w=W2 and a Y/X ratio of 0.75.Similarly, yet another device cell layout instance 5252 may be generatedwith a number of fingers F=F3 and width w=W3 while maintaining a Y/Xratio of 0.75. Finally, yet another device cell layout instance 5253 maybe generated with a number of fingers F=F4 and width w=W4 with a ratioof 0.75. As mentioned above, the number of fingers may be used todetermine a width of the transistor. Accordingly, in some exampleembodiments, as the number of fingers increases, the width of thetransistor may also increase. Transistor device cells 5250-5253 aresuccessively increasing. For a given transistor type, additional fingersmay produce larger gate widths to maintain the aspect ratio at aparticular value or within a range. For example, while an aspect ratioof 0.75 is shown here, it is to be understood that other rectangularaspect ratios may be used. In some embodiments, the aspect ratio may beprogrammable, for example. Various example embodiments may includeaspect ratios greater than or equal to (>=) 0.5 and less than 1. Someembodiments may include aspect ratios from about ⅔rds to about ¾ths, forexample. Additionally, while FIG. 52B illustrates an aspect ratio ofY/X, it is to be understood that an X/Y aspect ratio may also be used.Rectangular aspect ratios (e.g., X< >Y) may be advantageous to allowlayout routines to manipulate one or more transistors to optimizeplacement and reduce area of a semiconductor circuit by allowing thesystem to rotate the layout of the transistor to fit into differentavailable spaces on the layout, for example.

FIGS. 53A-B illustrate arrays of transistor device cell layout instancesconfigured to form a transistor according to an embodiment. As mentionedabove, transistor device cell layout instances illustrated in FIG. 52A,for example, may be combined in an M×N array (where M and N areintegers) to form a single composite device (e.g., multiplier attributeM=P>1 or using P transistors with M=1 in parallel). FIG. 53A illustratesa 3×4 array 5301 having a ratio Y/X of ⅔rds, for example (drawing not toscale). The device cell layout instances may be spaced apart along thex-axis in even steps Sx and along the y-axis in even steps Sy. In someembodiments Sx and Sy may be the same.

FIG. 53B illustrates arrays of transistor device cell layout instancesconfigured to form a transistor according to another embodiment. FIG.53B illustrates an example where the number of device cells (P) is setto a perfect square (e.g., 1, 4, 9, 16, 25, 36, . . . ) to produce anN×N array. In this example, 9 device cell layout instances 5302 areconfigured in a 3×3 array having a ratio Y/X of ¾ths=0.75, for example(drawing not to scale). The cells may be spaced apart along the x-axisin even steps Sx and along the y-axis in even steps Sy, which may be thesame as mentioned above.

The following is an example layout placement instruction for placingdevice cell layout instances for form a transistor:

-   -   placeFET x y xstep ystep #columns #rows

Where each transistor type may have unique layout parameter values usedin the above layout placement instruction, for example. In the abovelayout placement instructions x and y are a location where the firstdevice cell layout instance will be positioned. Additionally, “xstep”and “ystep” indicate offset for the position of the next layout instancealong the x-axis and y-axis. Finally, the number of columns and rows maybe specified. Based on the above disclosure, xstep, ystep, #columns, and#rows may be calculated and received by the layout placement instructionduring execution, for example.

FIG. 54 illustrates generating a layout for a transistor according toone embodiment. In this example, received parameters are used togenerate a circuit specification including four device cells (P=4),which are each n-type, Vds_max=6 v, MOS transistors having a gate lengthw=W1, length l=L1, fingers F=F1, and multiplier M=1. The circuitspecification is used to generate a transistor level schematiccomprising transistors 5401-5404 configured in parallel. The schematicis used to generate a layout. Each transistor 5401-5404 may beautomatically converted to a device cell layout instance 5410, forexample. The device cell layout instances are automatically placed usinglayout placement instructions. For instance, a first device cell layoutinstance may be placed at a starting position (e.g., x=0, y=0 positionof a layout environment). Device cell layout instance may besuccessively placed along the x-axis and y-axis based on an x-step and ay-step. The x-step is based on the x-axis length, X, plus an x celloffset (“xcell_offset”), and the y-step is based on the y-axis length,Y, plus a y cell offset (“ycell_offset”).

FIG. 55 illustrates generating a layout for a transistor according toone embodiment. In this example, received parameters are used togenerate a circuit specification including an n-type, Vds_max=6 v, MOStransistors having a gate length w=W2, length l=L1, fingers F=F2, andmultiplier M=25 (aka, P=25 device cells). The circuit specification isused to generate a transistor level schematic comprising transistor5501. The schematic is used to generate a layout. Transistor 5501 may beautomatically converted to 25 device cell layout instances 5510, forexample. The device cell layout instances are automatically placed usinglayout placement instructions. For instance, a first device cell layoutinstance may be placed at a starting position (e.g., x=0, y=0 positionof a layout environment). Device cells may be successively placed alongthe x-axis and y-axis based on an x-step and a y-step. The x-step isbased on the x-axis length, X, plus an x cell offset (“xcell_offset”),and the y-step is based on the y-axis length, Y, plus a y cell offset(“ycell_offset”).

FIGS. 54 and 55 illustrate examples where the number P is set to aperfect square as mentioned above.

Features and advantages of some embodiments of the present disclosuremay include automatic placement of layout instances (e.g., polygons) toform a layout of a transistor. For example, FIG. 56A illustratesautomatic placement of layout instances to form an MOS transistor. Inthis example, the number of device cells, P, is equal to 4, and theresulting layout includes a 2×2 array of transistor device cell layoutinstances 5650-5653. Cells 5650-5653 each comprise a plurality ofsources (s) (e.g., source 5602), gates (g) (e.g., gate 5601), and drains(d) (e.g., drain 5603) configured in parallel as vertical strips. Theautomatic placement of the device cell layout instances used to form acomplete layout of the transistor may be based on a plurality ofparameters, which some of which may be selected based on the transistortype and others which may be calculated. For example, differenttransistor types may select different stored parameters for performingautomatic layout using layout placement instructions. For instance,automated layout for an NMOS transistor having Vgs_max=6 v, Vds_max=12 vmay select different stored layout parameters, perform differentplacement calculations, and execute a different layout algorithm than aNMOS transistor having Vgs_max=6 v, Vds_max=6 v, for example.Accordingly, automatic layout of a transistor may include selectinglayout parameters based on a transistor type. Once the layout parametersare selected, additional parameters may be calculated by running customscripts for the transistor type. The selected and calculated parametersmay be included as parameters for layout placement instructions todynamically build the particular transistor. For example, source, drain,and gate dimensions and placement locations may be determined from thetransistor attributes (e.g., w, l, F, M, described above) and layoutelements (e.g., polygons) may be positioned in the layout automaticallybased on the selected and calculated parameters, for example. Asillustrated in FIG. 56A and as mentioned above, the selected parametersmay include a plurality of offsets for placing particular layoutelements in predefined positions, such as initial positions or initialpositions adjusted by a pitch, for example.

FIG. 56A illustrates automatic layout of metal layers according to anembodiment. The present example illustrates stored and calculatedparameters according to an embodiment. In this example, a plurality ofmetal layers are configured in horizontal strips covering the array ofdevice cell layout instances, such as horizontal metal layers 5620 and5621. Metal layers 5620-5621 are sometimes referred to as “Metal 2,”which may be a second layer of metal above a polysilicon layer, forexample. The metal layers may have a width set to a stored parameter formetal 2 maximum width (“M2wmax”). In some processes, when ametallization width exceeds a certain predefined value, slots may berequired to be inserted (e.g., to relieve stress). M2wmax width may beset just below a width where slots are required. In another embodiment,the slot width may be stored and M2wmax may be calculated by a customlayout placement script as the slot width less some predeterminedamount, for example. A layout placement script may further determine thenumber of horizontal metal strips that may fit across a particular rowof cells based on the gate width of the transistor, for example. Aninitial M2 strip may be placed at an offset M2os below an upper edge ofthe cell (or equivalent initial reference) and the calculated number ofhorizontal M2 strips having width M2wmax may be successively placed(e.g., separated by a predefined gap which may be a process dependentstored parameter). FIG. 56A further illustrates a gate metallization5625 configured between rows of device cells. The device cells may beseparated by another stored parameter “ygap,” and M2 gate metal 5625 maybe configured in the center of the gap, for example. Embodiments of thepresent disclosure may further illustrate the automatic placement ofvias (e.g., via 5610) connecting M2 to underlying structures in a layoutaccording to an embodiment. In this example, source, drain, and gatevias to M2 strips may be automatically placed based on the one or moreof stored parameters for the transistor, attributes of the transistor(e.g., gate width), and/or offsets. For example, one or more initialsource vias 5610 may be placed based on a source y-axis offset (Syos)and a source x-axis offset (Sxos). Additional source vias may placed atpredefined steps (e.g., x-axis pitch lengths and y-axis pitch lengthsbased on M2wmax) from the initial placement position. Similarly, one ormore initial drain vias 5611 may be placed based on a drain y-axisoffset (Dyos) and a drain x-axis offset (Dxos). Additional drain viasmay placed at predefined steps from the initial placement position.Likewise, gate vias may couple gates 5601 to M2 gate metal 5625according to gate steps. In this example, a gate-to-gate pitch (Pgg), agate-source-gate pitch (Pgsg), and drain-to-drain pitch (Pdd) may bestored parameters. In this example, a source between pairs of gates mayhave a greater x-axis length, and thus a Pgsg dimension may be used forproperly positioning layout elements of the transistor, for example. Ascan be seen, source vias start at an initial value (e.g., based on Sxosand Syos) and repeat along the x-axis and y-axis across each cell.Similarly, drain vias start at an initial value (e.g., based on Dxos andDyos) and repeat along the x-axis and y-axis across each cell. A devStepparameter may be stored and retrieved for a particular transistor typeto set the x-axis distance between a last source 5622 in one cell and afirst source 5623 in an adjacent cell, for example, so that layoutelements may repeat across cells along the x-axis. Similarly, y-gap anda width of the device may be used to offset positions of layout elementsacross cells along the y-axis, for example. FIG. 56A also illustratesthat for each connection point 5610, a plurality of vias may be placed.As illustrated at 5650, M2wmax may be used to calculate a number of viasthat may be automatically placed at an intersection of a M2 strip and asource, gate, or drain, for example. In one embodiment, the horizontaledges of the M2 strip and the vertical edges of a source, gate, or drainmay have a setback process parameter. M2wmax may have 2*setbacksubtracted off and the remaining distance used to calculate a number ofvias that may be placed in series as illustrated at 5650, for example.Finally, FIG. 56B illustrates vertical strips of metal layer 3 5690above M2, which may be used to connect M2 sources, M2 drains, and M2gates, for example.

Automated Layout of Integrated Circuits

Features and advantages of various embodiments of the present disclosuremay further include automated generation of layouts for integratedcircuits. In some example embodiments, transistor level schematics mayhave associated layout scripts. When the schematic is converted to alayout (e.g., in an EDA tool), the layout script associated with theschematic may be used to position layout instances generated from theschematic. Example embodiments of the present disclosure may includelayout scripts customized for each transistor level schematic toautomatically produce a concise efficient layout for the circuit.

FIG. 57 illustrates generating a layout according to an embodiment.Here, a layout generator software component 5700 converts a circuitschematic 5701 into a plurality of layout instances (e.g., instances5710, 5711, 5712, 5713) to form a circuit layout 5703. The circuitschematic 5701 may define transistor level circuitry for an analog ormixed signal circuit, for example. Layout generator 5700 may producelayout instances (e.g., polygons) for various circuit components incircuit schematic 5701. Initially, the layout instances may be scatteredand not optimally configured based on connectivity, circuit performance,and to conserve area, for example. Advantageously, layout generator 5700may receive a layout script 5702 associated with the circuit schematic5701. In one embodiment, the layout script 5702 may be customized andpredefined for the particular circuit schematic to optimize layout, forexample. As described in more detail below, layout script 5702 maycomprise a set of instructions for automatically placing layoutinstances generated from the circuit schematic 5701. As illustrated inlayout 5703, execution of the layout script 5702 (e.g., by a computersystem) may result in the positioning of the plurality of layoutinstances (e.g., instances 5710, 5711, 5712, 5713) to produce thecircuit layout 5703.

In various embodiments, the layout instances may correspond to a varietyof components from a circuit schematic, and in some cases, additionalstructures added to the layout that may be useful for the operation ofthe circuit when the circuit is implemented in a semiconductor, forexample. In one example embodiment, the layout instances may bepredefined layouts for sub-circuit schematics as mentioned above (e.g.,predefined layouts associated with a comparator, an amplifier, anoscillator, a bandgap circuit, a current mirror, a transistor layout,such as a signalFET or powerFET layout, or a wide variety of otheranalog or mixed signal circuits). Accordingly, a layout script mayinclude a reference to a library (e.g., a library name) where one ormore layout instances are stored (e.g., a library where one or morepredefined layouts for the circuit schematic are stored). In otherexample embodiments, the layout instances may be passive layoutcomponents, such as resistor layout components or capacitor layoutcomponents, for example. Advantageously, in certain example embodiments,the layout script produces a particular placement for each of theplurality of layout instances generated from circuit schematic 5701 andmay further incorporate and automatically position additional layoutstructures (e.g., vias, guard rings, bulk connections). Accordingly, insome example embodiments, all the layout instances used to form acircuit layout (e.g., and a mask) may be automatically positioned toproduce a circuit layout.

FIG. 58 illustrates an example system including an automated layoutgenerator according to an embodiment. Here, a functional circuitcomponent 5801 may be configured to generate a plurality of circuitschematics that perform a common circuit function. For example,functional circuit component 5801 may be used to generate circuitry forany one of a comparator, oscillator, amplifier, current mirror, gmcircuit, voltage to current converter, voltage buffer, or a wide rangeof other analog or mixed signal circuit functions. A particularfunctional circuit component 5801 may implement a particular function(e.g., a voltage to current converter) according to a variety ofparameters (e.g., input device type, gain, clamping, etc. . . . ).Generator software 5800 may receive the parameter values and generate anetlist to produce circuit schematic 5802(1) as described above.Generator 5800 may produce a plurality of different circuit schematics5802(1)-(N) in response to receiving various combinations of parametervalues, for example. Based on different parameter values, a functionalcircuit component may produce circuit schematics for oscillators,amplifiers, etc. . . . having different characteristics. As describedabove, circuit schematics 5802(1)-(N) may be generated from predefinedsub-circuit schematics, which may be stored in a library 5805. Library5805 may store sub-circuits schematics and sub-circuit layouts toproduce circuit schematics and layouts for functional circuit component5801 across different parameter values, for example.

Features and advantages of some embodiments of the present disclosurefurther include generator 5800 producing a layout script 5803. Layoutscript 5803 may be associated with one or more of the plurality ofcircuit schematics 5802(1)-(N), which may perform a common function andbe generated from different values of the same parameters. In someembodiments, layout script 5803 is configured to position layoutinstances for each of the plurality of circuit schematics. For example,in FIG. 58 a single layout script 5803 is configured to produce a layoutfor multiple circuit schematics 5802(1)-(N). In some embodiments, thelayout script may perform a plurality of placement operations on layoutinstances from different circuit schematics (e.g., placement operationson layout instances from schematic 5802(1) and other placementoperations on other layout instances from schematics 5802(2)-(N)). Asdescribed in various examples below, the placement operations on layoutinstances corresponding to circuit schematic 5802(1) may be executed(e.g., when circuit schematic 5802(1) is generated and converted to alayout) and placement operations on layout instances corresponding toother circuit schematics are not executed (e.g., when circuit schematic5802(1) is generated and converted to a layout). As but one example, ifa particular circuit schematic is converted to produce a layout instanceXU1 and another circuit schematic is converted to produce a layoutinstance XU2, a layout script may include placement operations on bothXU1 and XU2, but the placement operation may only be executed on alayout instance if it exists in the layout canvas. Accordingly, in someembodiments, a single layout script may include placement operationsthat are only executed when particular circuit schematics are beingconverted to layouts, for example.

Layout generator 5806 may receive layout script 5803 and any circuitschematic 5802(1)-(N) and generate corresponding layouts. Here, layoutgenerator 5806 receives layout script 5803 and circuit schematic15802(1) and produces layout 5808. Similarly, layout generator 5806receives layout script 5803 and circuit schematicN 5802(N) and produceslayout 5809. Layouts for any of circuit schematics 5802(1)-(N) may besimilarly generated automatically, for example.

While the presently described automated layout techniques may be appliedon a system described in FIG. 58 and other parts of the presentdisclosure, it is to be understood that these techniques may be used toconvert schematics into layouts in an EDA environments using an EDAtool, for example.

FIG. 59 illustrates converting circuit schematics to layout instancesand generating a layout according to an embodiment. In this example,circuit schematic 5901 is converted to layout instances 5910-5913 at5902. In various embodiments, layout instances may correspond todifferent components in a circuit schematic. For example, layoutinstances may correspond to passive layout components, such as resistorlayout components or capacitor layout components. In this example,layout instances 5913 a-d may be resistor layout segments correspondingto a plurality of resistor segments in circuit 5901 configured toproduce one total resistor value, Rtotal, for example. In other examplesbelow, layout instances may be capacitor layout segments correspondingto a plurality of unit capacitors in a circuit schematic configured toproduce one total capacitance value, Ctotal, for example. As mentionedabove, different parameterized instances of circuit schematic 5901 maycomprise different predefined sub-circuit schematics. In this example,layout instances 5910, 5911, and 5912 are three (3) predefinedsub-circuit schematic layouts. It is to be understand that any one ormore components in a circuit schematic 5901 may be converted to a layoutinstance and positioned according to the techniques described herein.

Initially, layout instances may be placed in a layout environment in anon-optimal manner (e.g., scattered across a canvas). Layout script 5902may position the layout instances at particular positions to produce amore optimal layout. In this example, layout script 5902 positions thelayout instances at 5914 into particular positions to produce layout5930. Advantageously, layout script 5902 may be customized so that eachlayout instance from one or more corresponding circuit schematics may beautomatically placed in any position to produce an optimized layout, forexample.

While the example shown in FIG. 59 and in further example belowillustrates layout instances being initially positioned on a layoutcanvas before final positioning by a layout script, it is to beunderstood that layout instances may be directly placed in finalcustomized positions by the layout script without such an initialplacement on the canvas.

FIG. 60 illustrates a layout script according to an embodiment. Featuresand advantages of some embodiments may include layout scripts comprisinga plurality of layout placement instructions. Layout placementinstructions may specify a placement location (e.g., in a layoutenvironment) for one or more corresponding layout instances.Accordingly, the layout placement instructions may advantageously beused to position one or more of the layout instances. In this example,layout script 6000 includes a plurality of layout instructions6001-6003. Layout placement instructions 6001-6003 may comprise code forimplementing particular functions corresponding to each layout placementinstruction. The code may be implemented as a script, for example, suchas a script in an EDA environment (e.g., a Skill Script in Cadence®). Inthis example, the layout placement instructions may operate on one ormore instances. Additionally, the layout placement instructions mayreceive layout parameters to control the various operations performed onthe layout instances, for example.

In various embodiments, script 6000 may include a plurality of layoutplacement instructions 6001-6003, and a subset of the layout placementinstructions may include a reference to a particular layout instance. Asillustrated in various examples below, in some embodiments the referenceis a cell name (e.g., place <cell_name>). In other embodiments, thereference is an instance name (e.g., place <instance_name>). In someapplications multiple layout instances may have the same cell name buthave different instance names. Accordingly, the layout placementinstructions may be advantageously crafted for different scenarios whereplacement based on cell names or placement based on instance names maybe more efficient.

A variety of example layout placement instructions are shown in furtherdetail below.

FIG. 61 illustrates an example placement operation of a layout placementinstruction according to an embodiment. In some embodiments, one or morelayout placement instructions specify a particular layout instance, anx-axis coordinate, and a y-axis coordinate for positioning theparticular layout instance. In this example, a layout instance 6101 isplaced at the (x,y) coordinates (0,0) as illustrated at 6101A (e.g.,“place <cell_name> 0 0”). Alternatively, layout instance 6101 may beplaced at another (x,y) coordinate (x1,y1) as illustrated at 6101B(e.g., “place <cell_name>x1 y1”; where x1 may be a first specified valueand y1 may be a second specified value). FIG. 61 also illustratesanother feature of some embodiments, wherein one or more layoutplacement instructions further specify a rotation of the particularlayout instance. In this example, a layout placement instruction mayrotate layout instance 6101B by 90 degrees (e.g., place <cell_name>x1 y190). In some embodiments, it may be advantageous for a layout placementinstruction to further specify a library name where the particularlayout instance is stored. For example, a library where the predefinedsub-circuit layout instances are stored may included as a parameter in alayout placement instruction (e.g., place <library_name> <cell_name> 0 00”; may place a particular cell from a particular library at (x,y)=(0,0)with 0 rotation).

FIG. 62 illustrates further examples of generating a layout according tofurther embodiments. In some embodiments, a layout placement instructionmay position multiple layout instances. The example shown in FIG. 62 isillustrative. Here, multiple layout instances for the same type of cell(e.g., with different instance names) may be placed with a single layoutplacement instruction. In this example, layout instances 6201 a-bcorrespond to a first layout instance type (e.g., one predefinedsub-circuit layout or passive component), layout instances 6202 a-dcorrespond to a second layout instance type (e.g., resistor layoutcomponents), and layout instances 6203 a-c correspond to a third layoutinstance type (e.g., capacitor layout components).

In one embodiment, layout instances 6201 a-b may be placed with a singlelayout placement instruction. For example, the following instruction mayplace both layout instances with placement beginning at a startingposition and then at another position defined by a step: “placeSTEP<cell_name>x y step stepdirection rotation”. This example layoutplacement instruction illustrates multiple features that may be includedin various embodiments. First, a first layout instance <cell_name> maybe placed at a particular (x,y) coordinate, and successive layoutinstances having the same <cell_name>, for example, are placed inpositions offset from the specified (x,y) coordinate by an amount“step”. Further, the step direction may be specified in the layoutplacement instruction (e.g., +x,−x, +y, or −y). Finally, a rotation isincluded in this example layout placement instruction. Thus, executionof the following layout placement instruction may result in layoutinstances 6201 a-b being positioned starting at (0,0) and then at“0+<cell_width>” along the +x direction with a 90 degree rotation:“placeSTEP <cell_name_6201>0 0<cell_width_6201>×90”, where<cell_name_6201> is the cell name and <cell_width_6201> is the width(here, length along the x-axis) of layout instances 6201 a-b. Similarly,layout instances 6202 a-d may be successively placed starting at (x1,0)using the single layout placement instruction and 6203 a-c may besuccessively placed starting at (0,y1) using the single layout placementinstruction. In some example embodiments, resistors may have a dedicatedlayout placement instruction (e.g., placeRES) and capacitors may have adedicated layout placement instruction (e.g., placeCAP), both of whichare described in more detail below.

FIG. 63A illustrates example types of steps that may be used in variouslayout placement instructions according to various embodiments. FIG. 63Aillustrates that layout instances 6301 a-d may be stepped differentlythan layout instances 6302 a-d. For example, in one embodiment, a stepmay specify a distance between adjacent boundaries of layout instances.This is illustrated at 6300 a where layout instances 6302 a-d are placedat positions starting at (0,0) and successively along the +x axis with adistance, step, between the vertical sidewall boundary of each layoutinstance. In this case, the layout placement instruction may positioneach layout instance based on the sum of the step value specified in theinstruction and a length of the layout instance along one axis (e.g.,here, the x-axis). Specifying a distance between adjacent layoutinstances may be advantageous for layout instances that may vary insize, such as for resistor layout components or capacitor layoutcomponents, for example.

Alternatively, a step may specify a pitch, where successive placementsare positioned at an initial position plus the pitch (e.g.,x=xinit+(i*pitch)). Accordingly, some layout placement instructions mayset the step to be greater than or equal a length of a boundary along afirst axis of the subset of layout instances to be positioned. In FIG.63A, layout instances 6301 a-d have step set to a length along thex-axis and each layout instance is placed such that adjacent verticalboundaries are touching. This step type may also be used to set a spacebetween each layout instance, for example.

FIG. 63B illustrates another parameter used in some layout placementinstructions according to an embodiment. In some embodiments, a singlelayout placement instruction may be used to place multiple groups oflayout instances (e.g., multiple subgroups of resistor layout segments).In this example, layout placement instances comprise at least a firstsubgroup of layout placement instances 6303 a-d and a second subgroup oflayout placement instances 6304 a-d. A layout placement instruction mayspecify a step between layout instances in the first and secondsubgroups. In some embodiments, the subgroups may have different names(e.g., resistor layout instance names or cell names) and the layoutplacement instruction may position layout instances in the same groupusing a first space (or step) and the layout placement instruction mayposition the two subgroups such that there is a second space (or step)between the two groups, for example. In this example, a layout placementinstruction may successively position layout instances 6303 a-dbeginning at (0,0) separated by “step” along the x-axis. Layoutinstances 6304 a-d are then successively positioned beginning a positionalong the x-axis separated from an adjacent boundary of the last layoutinstance of group 6303 a-d by a “group step”. Layout instances 6304 a-dare then successively positioned separated by a “step.” An examplelayout placement instruction for placing resistor layout instances is asfollows: placeRES x y step_btwn_same_name_res step_btwn_diff_name_resrotation directionx directiony distance. Further discussion of the“distance” feature is discussed in more detail below in connection withFIG. 63C.

In some embodiments, one layout placement instruction may follow anotherlayout placement instruction. The following layout placement instructionmay place one or more layout instances at positions starting from afinal position of the previous layout placement instruction. This may beadvantageous in successively placing different layout instances relativeto previously place layout instances, for example. FIG. 63C illustratestwo different examples. In layout 6300 c, layout instances 6306 a-d aresuccessively placed with a first layout placement instruction (e.g.,placeSTEP), and layout instances 6305 a-d are successively placed with asecond layout placement instruction (e.g., placeSTEPCONTINUE) continuingfrom where the previous layout placement instruction ended, for example.In some embodiments, the second layout placement instruction may includelayout placement parameters for step direction and rotation as describedabove. Layout 6300 d illustrates that the second layout placementinstruction successively places layout instances 6305 a-d continuingfrom where the previous layout placement instruction ended along the −ydirection with a rotation of −90 degrees, which in this example placeslayout instances around the perimeter of a filled region 6390, forexample. The following are examples of layout placement instructionsthat may follow a previous layout placement instruction and maintain thex,y coordinates of the previous layout placement instruction accordingto an embodiment: “placeSTEPcell libraryname cellname rotation” //places layout instance for “cellname” from “libraryname” (which may notbe converted from the schematic and not on the layout canvas) at nextstep x y from previous instruction (may follow placeSTEP).placeSTEPcontinue libraryname cellname stepdirection stepdistancerotation // places layout instance at next step x y from previousinstruction (may follow placeSTEP)

FIG. 64 illustrates another parameter used in some layout placementinstructions according to various embodiments. In this case, a layoutplacement instruction further specifies a distance. The distance mayspecify a maximum distance along one axis (e.g., the x-axis), whereplacement of layout instances that exceed the distance are positionedstarting at a different position along the other axis (e.g., the y-axis)and proceeding along the first axis (e.g., the x-axis) up to thedistance. Accordingly, layout instances may be successively placed alonga first axis from a starting position up to second position based on thedistance. When a first portion of the layout instances span a spacebetween the starting position and the second position, a second portionof the layout instances are successively placed along the first axisbetween a third position, offset from the final position along a secondaxis, and a fourth position based on the distance. FIG. 64 illustratesmultiple different layouts of layout instances 6401 a-c and 6402 a-g fordifferent values of a distance parameter.

Layout 6400 a illustrates, for a first distance, d1, may be set as aparameter. Accordingly, layout instances 6401 a-c are successivelyplaced starting from (0,0) along the x-axis. Once instance 6401 c isplaced, there is room within distance d1 for instance of 6402 a. Oncethe layout instances 6401 a-c and 6402 a span the distance d1, the nextposition for placement moves to a new position, offset along the y-axisfrom the ending position of instance 6402 a by an amount equal to thethicker of instances 6401 a-c or 6402 a (here, they are the samethickness), and resumes in the −x direction along the x-axis. In thisexample, all the remaining instances of 6402 are placed. However, ifadditional instances were to be placed, the placement would increment upthe y axis when each time the distance d1 was filled. This isillustrated in layout 6400 b, where a distance d2, which is less thand1, causes the last two layout instances 6402 g-f are wrapped around thex-axis to form a third row along the y-axis. In various embodiments, theautomated serpentine (“back and forth” or “alternating”) positioning ofthe layout segments may advantageously reduce the length of connectionsbetween the segments in some example applications.

Layouts 6400 c-d illustrate another feature of some embodiments. Inlayout 6400 c, if a layout instance cannot fit within remaining distanced3, it is offset (here, up the y-axis) and the starting position is atdistance d3. In layout 6400 d, the layout instances may be leftjustified along to x=0.

Layouts 6400 e-f illustrate another feature of some embodiments. Thisexample illustrates another parameter that may specify “strict” or“loose” adherence to a distance parameter. For example, as illustratedin layout 6400 e, it may be advantageous in some situations to allowsome small extension beyond distance, d4, before continuing placement atan offset position. As illustrated in layout 6400 f, the system“strictly” applies distance, d4 as a maximum, and layout instance 6401 cis positioned in the next row up the y-axis so as not to exceed thedistance, d4.

Layout 6400 g illustrates another parameter of a layout placementinstruction according to an embodiment. In one embodiment, a layoutplacement instruction may associate a distance with one of the layoutinstances. In this example, the distance is set to equal d5, the lengthof the longest resistor layout component. Accordingly, one instance ofthe longest resistor layout component is placed, and the next positionis moved to a next position (here, up the y-axis). Successive layoutsegments are placed as described above until all resistor layoutcomponents are placed to form layout 6400 g, for example.

Features and advantages of some embodiments may further include layoutplacement instructions comprising conditional statements. FIG. 65illustrates the process for a conditional layout placement instruction.At 6501, a condition associated with a layout placement instruction isevaluated. A variety of conditions may be associated with layoutplacement instructions, including expressions (logical or arithmetic) orconditions based on factors pertaining to the layout itself, examples ofwhich are presented below. At 6502, the condition may be evaluated. Ifthe condition is true, one or more layout placement instructions may beexecuted at 6503. If the condition is false, other layout placementinstructions may be executed at 6504. While FIG. 65 illustratesexecuting alternative layout placement instructions (e.g.,IF<condition=true> then <layout placement instruction 1>, else <layoutplacement instruction 2>), it is to be understood that layout placementinstructions may only be executed if the condition is true or false, andotherwise the conditional statement ends (e.g., IF<condition=true> then<layout placement instruction>, else continue; or IF <condition=false>then <layout placement instruction>, else continue).

In one embodiment, a conditional layout placement instruction determinesif a position is occupied. In some applications, a layout script may beused for multiple circuits of the same type (or family; e.g., the samefunctional circuit component with different parameters). For someparameters, a particular layout instance may occupy a space on thelayout. Thus, determining if a particular position is occupied mayadvantageously indicate which circuit in the family is being generated.Accordingly, different layout instances and/or different positions maybe specified based on whether or not a position is occupied, which mayresult in the execution of different layout placement instructions forthe same type of circuit with different parameters, for example. Forinstance, the following example layout placement instruction maydetermine if a layout instance is at a particular position: placeTAP xy. If the position (x,y) is occupied the instruction may execute alayout placement instruction following placeTAP. Alternatively, if theposition is not occupied the instruction may execute a different layoutplacement instruction (e.g., by skipping the line following placeTAP).The following conditional layout placement instruction alternativelyplaces “cellname1” or “cellname2” at different locations based onwhether or not the position (x,y)=(10,10) is occupied:

placeTAP 10 10

place cellname1 0 5.5 R0

place cellname2 4.9 5.5 R0

As mentioned above “cellname1” may be used for a circuit with one set ofparameters (e.g., a circuit with a high voltage switch) and “cellname2”may be used for the same circuit with a different set of parameters(e.g., the same circuit with a low voltage switch). Because differentcircuits may have different layout spacings, the different cells may beadvantageously positioned in different locations.

Another example conditional layout placement instruction may evaluateattributes of layout instances and execute different layout placementinstructions based on the result. For example, a conditional layoutplacement instruction may determine if one or more specified layoutinstances are included in the layout. One or more first layout placementinstructions may be executed if the specified instance is included inthe layout, and one or more second layout placement instructions may beexecuted if the one or more specified layout instances are not in thelayout. Determining whether or not layout instances are included in alayout may be performed by evaluating conditions based on cell names orinstance names, for example. The following is an example conditionallayout placement instruction according to an embodiment: placeIF <cellor instance name> <NOT-opt> contains <char(s)+wildcards>. Thisinstruction may execute layout placement instructions following the“placeIF” command until a “placeEND” command is reached. The followingare examples of “placeIF” commands:

placeIF cellnamecontains amp* //places amplifiers if cellname contains“amp<any>.

place amplifier_highgain 1.23 2.23 R0

place amplifier_lowgain 4.3 0 R0

placeEND

placeIF instancenamecontains osc_res* //places switch and mux cells ifinstance names contain “osc_res<any>”.

place osc_resistor_switch1 1.23 2.23 R0

place osc_res_mux 4.3 0 R0

placeEND

placeIF instancenameNOTcontains osc_res* //places resistors if instancenames do NOT contain “osc_res<any>”.

placeRES 0 0 0.56 0.8 R0 x y 85

placeEND

Where “*” is a wildcard. Other wildcards may include: ∥ for OR; && forevaluating alternative variates (e.g., “res*&&cap*” or “ch*3&&ch*5”). Itis to be understood that a wide variety of wildcard operators may beused to build expressions for conditional layout placement instructions,for example. In one embodiment, a conditional may be include bothplaceIF and placeELSE. An example is as follows:

placeIF instancenameNOTcontains osc_res* //places resistors if instancenames do NOT contain “osc_res<any>”.

placeRES 0 0 0.56 0.8 R0 x y 85

placeELSE

placeTAP 101 30

placeRES −3.14 9.75.56 0.8 R90 −x y 31

placeRES 8.85 69.655 0.56 0.8 R0 x y 131H

Where “31” is the distance parameter described above and “131H” isanother distance parameter with a strict adherence as also describedabove.

FIG. 66 illustrates another layout placement instruction forincorporating a transistor into a layout according to an embodiment. Asmentioned above, a transistor may be formed from a plurality oftransistor layout elements, such as transistor layout elements6601-6604. The transistor layout elements 6601-6604 may be positionedusing one or more layout placement instruction to form a transistorlayout component 6610 (e.g., a layout component for a single compositeFET transistor). In various embodiments, transistor layout component6610 may be incorporated into a layout for a circuit by positioning thetransistor layout component 6610 with a plurality of other layoutinstances corresponding to other circuitry (e.g., at a next level up inthe layout). As illustrated in FIG. 66, transistor layout component 6610is incorporated in a layout with layout instance 6611 (e.g.,corresponding to a sub-circuit schematic), layout instances 6612 a-c(e.g., corresponding to capacitors), and layout instances 6613 a-h(e.g., corresponding to resistor segments). Layout placementinstructions may operate on each layout instance 6610-6613. An exampleof an automatically generated circuit layout for the automaticallygenerated resistors, automatically generated capacitors, automaticallygenerated transistor, and the pre-defined sub-circuit is illustrated at6600.

In various embodiments, a plurality of different types of layoutplacement instructions that perform different functions may form aplacement set (e.g., a placement language), which may be used toautomatically position layout instances to produce a layout. Thefollowing is just one example set of layout placement instructions:

place libraryname cellname x y Rotation //places cells from schematic.placeINST instance_name x y rotation //places based on instance name notcell name.placeSTEP libraryname cellname x y stepdirection stepdistance rotation//places and steps cells in schematic; stepdistance=pitch (e.g., apredefined x or y length+an optional offset spacing).placeSTEPcontinue libraryname cellname stepdirection stepdistancerotation //places at next step at last step x y from above cell step;follows placeSTEP.placeSTEPcell libraryname cellname rotation //places non existing cellat next step x y from above cell step; follows placeSTEP (e.g., place alayout instance not converted from a schematic).placeCELL libraryname cellname x y rotation //places cell not inschematic (e.g., place cell not converted from schematic at x y withrotation).placeRES x y step_btwn_same_name_res step_btwn_diff_name_res rotationdirectionx directiony distanceforres(H hard stop or maxL) //placesmultiple resistors from schematic; distanceforres sets the maximumdistance for one row of resistors, “H” field at end defines hard stop no% fudge factor; “maxL” field instead of a number sets the largestresistor as the distance.placeCAP x y step rotation distance_available_for_step //places caps inschematic in rows for given distance.placeFET x y xstep ystep #columns #rows //places transistor layoutelements for transistors (e.g., M>1 or in parallel) in an array ofcolumns and rows; xstep ystep calculated from formula for device type.placeTAP x y //taps x,y and executes next line if nothing found (noother instance occupies the position (x,y) and executes the line afteris something is found at the tap point.placeIF <cellNameContains, instNameContains, cellNameNOTcontains,instNameNOTcontains> <cellname or string, +wildcards> //executes alllayout placement instructions until placeEND is reached. Example Usage:to distinguish between different base cells.placeIFELSE <cellNameContains, instNameContains, cellNameNOTcontains,instNameNOTcontains> <cellname or string, +wildcards>//executes alllayout placement instructions until placeELSE if criteria is met. Ifcriteria is not met, runs commands btwn placeELSE and placeEND. ExampleUsage: if the addition of a cell changes placements for other cells.moveORIGIN shift_direction; finds prboundary and moves 0,0 to lowest y,leftist x or both xy. Usage: After positioning, resets 0,0 to predefinedcorner (e.g., lower left corner) for positioning the combined layoutinstance in a higher level layout.

The following is one example layout script used to generate a layout fora resistor circuit. The following example layout script may be used tolayout a family of resistors with different parameters where some of thelayout instances may exist for some resistor circuits and not others:

layout,resistor //place one of the following switches if they are foundin the circuit. place Generate STONEresistorswitchH 14.89 58.005 R180place Generate STONEresistorswitchHB 14.89 58.005 R180 place GenerateSTONEresistorswitchT 0 0 R0 place Generate STONEresistorswitchTB 0 0 R0//Check x,y=10,10 and place based on whether it is occupied or not.placeTAP 10 10 placeINST XkelvinP −1.675 −4.83 R0 placeINST XkelvinP86.03 19.4 R270 placeTAP 10 10 placeINST XkelvinN 5.55 −4.83 R0placeINST XkelvinN 61.9 20.335 R270 placeTAP 10 10 placeSTEP GenerateSTONEresistorswitchL 0 7.87 x 7.99 R0 placeSTEP GenerateSTONEresistorswitchL 158.4 7.87 x 7.99 R0 placeSTEPcontinue GenerateSTONEresistorswitchLB x 7.99 R0 //place predefined multiplexer layoutsplace Generate STONEresistorimux0p125 42.345 49.635 R0 place GenerateSTONEresistorimux0p25 42.345 49.635 R0 place GenerateSTONEresistorimux0p5 42.345 49.635 R0 place Generate STONEresistorimux442.345 49.635 R0 place Generate STONEresistorimux8 42.345 49.635 R0place Generate STONEresistorimux2 42.345 49.635 R0 //place resistorsbased on which switches have been placed (IF) and where (TAP)placeIFELSE cellNameNOTContains switchT&&switchL placeRES 0 0 0.56 0.8R0 x y 85 //place resistor here if “switchT” and “switchL” are not oncanvass. placeELSE placeTAP 101 20 //else place resistor based onwhether 101,20 is occupied (may depend on particular circuit in thefamily) placeRES −2.19 8.85 .56.8 R90 -x y 31 placeRES 8.85 59.655 0.560.8 R0 x y 131H placeEND moveORIGIN x //reset x for higher level usemoveORIGIN y //reset y for higher level use endlayoutbio

The above example layout placement instructions are just one exampleembodiment of layout scripts and layout placement instructions that maybe used. It is to be understood that other implementations could also beused within the scope of the present disclosure and claims.

Example Computer Systems

FIG. 67 illustrates example computer system hardware according tocertain embodiments. Various embodiments of the present disclosure maybe implemented in computer executable code (software) for performingvarious techniques described herein. FIG. 67 illustrates a simplifiedexample of a computer used to execute software according to variousembodiments. One or more such computers may be used to perform thetechniques described herein. As shown in FIG. 67, a computer system 6700may include one or more processors 6701, such as a multi-processor CPU(e.g., from Intel® or AMD®). Processors 6701 may load executable programcode from a computer readable storage medium, which when executed,performs some or all of the techniques described herein. Processors 6701may be coupled to one or more buses, which are represented here as bus6705, to communicate with various subsystems. In this illustrativeexample, processor(s) 6701 may communicate with a storage device 6702(e.g., to retrieve executable code), which may comprise magneticstorage, optical storage, or solid-state storage, for example.Processor(s) 6701 may further communicate with memory 6703 over a bus6705. Memory 6703 may represent a number of memories including arandom-access memory (RAM) for storage of instructions and data duringprogram execution and a read-only memory (ROM) 820 in which fixedinstructions are stored, for example. In some embodiments, processor(s)6701 may communicate with removable media (e.g., CD-ROM, DVD, Blu-Ray,etc.), a removable flash memory-based drive or card, and/or other typesof storage media known in the art.

Processor(s) 6701 may communicate with a network interface 6704 over abus 6705, for example. Network interface 6704 may allow computer system6700 to communicate with a network 6710 which may be in communicationwith other computer systems to perform the techniques described herein,for example. In various embodiments, network interface 6704 may include,for example, an Ethernet card to support a variety of Ethernet rateconnections (e.g., in an office, server room, or data center), a Wi-Fi,IEEE 802 based system, and/or cellular adapter, a modem (telephone,satellite, cable, ISDN, etc.), digital subscriber line (DSL) units,and/or other data communications systems, for example.

In some embodiments, the techniques described herein may be performed onone or more server computers. In other embodiments, some or all of thetechniques described herein may be performed on a laptop or desktopcomputer or other computer system that may include an input/outputinterface 6706, for example. Input/output interface 6706 may includehardware for receiving information from an input device (e.g., a mouse,keyboard, touchpad, or the like) and/or provide information to an outputdevice (e.g., a display).

Although bus 6705 is represented here as a single bus, it is to beunderstood that bus 6705 may comprise multiple busses.

It will be appreciated by those skilled in the art that computer system6700 is illustrative and many other configurations having more or fewercomponents than system 6700 are possible.

In some embodiments, features and techniques described herein may beembodied in software executing on remote computer systems (e.g.,software as a service executing in the cloud). FIG. 68 illustratesvarious computer system configurations that may be used in certainembodiments. In this example, the executable code for performing thesome or all of techniques disclosed herein may be executing on one ormore server computers coupled together over a network 6810, such as alocal area network (LAN), wide area network (WAN), or other networks(e.g., the Internet). Computer executable code for performing some orall of the techniques disclosed herein may be executed on a singleserver or multiple servers 6811-6813, for example. Servers 6811-6813 mayhave computer architectures as described in FIG. 67. Software accordingto various embodiments may be executed directly by a server or be run ona virtual machine, which executes on computer system hardware, forexample, as known to those skilled in the art. In some embodiments,embodiments of the disclosure may be performed on one or more serversthat are part of data centers 6820-6821, for example.

As mentioned above, some embodiments described herein may receive inputsfrom users. Accordingly, users may interact with computer systems6830-6832, which in turn communicate with one or more server computers6811-6814 over network 6810 to perform the techniques described herein,for example.

FIG. 69 illustrates a process of making a circuit according to anembodiment. As mentioned above, some or all of the techniques describedherein may be used as part of a process for making an integratedcircuit. For example, at 6901, information specifying a circuit to begenerated is received in a software system (e.g., a generator softwaresystem according to the various embodiments described above). Thesoftware system may generate schematics at 6902. At 6903, a layout isgenerated. At 6904, a circuit may be fabricated using the layout. Forexample, the layout may be converted to file format for representing thegeometric shapes in the layout and used to create photomasks or loadedinto semiconductor fabrication tools and used to fabricate a physicalsemiconductor circuit. At 6905, the circuit is packaged. For example, asemiconductor wafer may be divided into individual semiconductor die(aka “chips”), and one or more of the semiconductor chips may bepackaged.

FURTHER EXAMPLE EMBODIMENTS

Features and advantages of various embodiments may pertain to automaticgeneration of circuits according to the following techniques alone or incombination as follows.

In various embodiments, the techniques described herein may be embodiedin computer implemented methods, systems, apparatuses, and computerreadable mediums storing machine (e.g., computer) executableinstructions.

The following are various example methods according to variousembodiments. It is to be understood that the following examples may becombined in a variety of different combinations. Additionally, it is tobe understood that other example combinations are possible light of thepresent disclosure. Therefore, the following examples are illustrativeand not limiting.

Embodiment 1

A computer-implemented method of generating a circuit comprising:generating a circuit specification, said generating a circuitspecification comprising: receiving parameters specifying a circuit tobe generated; selecting, based on the parameters, predefined sub-circuitschematics to be included in the circuit; determining, based on theparameters, connections between the sub-circuit schematics; generating acircuit specification for the circuit to be generated specifying thesub-circuit schematics and the connections between the sub-circuitschematics; and generating a layout script associated with the circuitto be generated; and converting the circuit specification into a circuitschematic and circuit layout, said converting comprising: selectingpredefined sub-circuit schematics specified in the circuitspecification; connecting the predefined sub-circuit schematics for formthe circuit schematic; converting the circuit schematic into a pluralityof layout instances; and positioning the layout instances based on thelayout script associated with the circuit to be generated to produce thecircuit layout.

Embodiment 2

The method of embodiment 1, wherein the predefined sub-circuitschematics comprise predefined analog sub-circuit schematics.

Embodiment 3

The method of embodiment 1, wherein the parameters specify one or morefunctional circuit components, and wherein the one or more functionalcircuit components have corresponding predefined sub-circuit schematics.

Embodiment 4

The method of embodiment 3, further comprising generating one or moresymbols corresponding to the one or more functional circuit components,wherein the symbols encapsulate the selected predefined sub-circuitschematics.

Embodiment 5

The method of embodiment 1, wherein the layout script comprises aplurality of layout placement instructions.

Embodiment 6

The method of embodiment 1, wherein the layout script is configured toposition layout instances from a plurality of circuit schematics.

Embodiment 7

The method of embodiment 6, wherein the plurality of circuit schematicsare associated with the same functional circuit component.

Embodiment 8

The method of embodiment 1, wherein said generating a circuitspecification is performed on a first software system and saidconverting the circuit specification to a circuit schematic and acircuit layout is performed on a second software system.

Embodiment 9

The method of embodiment 8, wherein the second software system is anelectronic design automation software system.

Embodiment 10

A computer system for generating a circuit comprising: one or moreprocessors; and a non-transitory computer-readable storage medium havingstored thereon computer executable instructions, which when executed bythe computer system, cause the computer system to perform a methodcomprising: generating a circuit specification, said generating acircuit specification comprising: receiving parameters specifying acircuit to be generated; selecting, based on the parameters, predefinedsub-circuit schematics to be included in the circuit; determining, basedon the parameters, connections between the sub-circuit schematics;generating a circuit specification for the circuit to be generatedspecifying the sub-circuit schematics and the connections between thesub-circuit schematics; and generating a layout script associated withthe circuit to be generated; and converting the circuit specificationinto a circuit schematic and circuit layout, said converting comprising:selecting predefined sub-circuit schematics specified in the circuitspecification; connecting the predefined sub-circuit schematics for formthe circuit schematic; converting the circuit schematic into a pluralityof layout instances; and positioning the layout instances based on thelayout script associated with the circuit to be generated to produce thecircuit layout.

The computer system of embodiment 10 in combination with any one or moreembodiments 2-9.

Embodiment 11

A non-transitory computer-readable storage medium having stored thereoncomputer executable instructions, which when executed by a computersystem, cause the computer system to: generate a circuit specification,said generating a circuit specification comprising: receiving parametersspecifying a circuit to be generated; selecting, based on theparameters, predefined sub-circuit schematics to be included in thecircuit; determining, based on the parameters, connections between thesub-circuit schematics; generating a circuit specification for thecircuit to be generated specifying the sub-circuit schematics and theconnections between the sub-circuit schematics; and generating a layoutscript associated with the circuit to be generated; and convert thecircuit specification into a circuit schematic and circuit layout, saidconverting comprising: selecting predefined sub-circuit schematicsspecified in the circuit specification; connecting the predefinedsub-circuit schematics for form the circuit schematic; converting thecircuit schematic into a plurality of layout instances; and positioningthe layout instances based on the layout script associated with thecircuit to be generated to produce the circuit layout.

The non-transitory computer-readable storage medium of embodiment 11having stored thereon computer executable instructions, which whenexecuted by a computer system, cause the computer system to perform anyone or more of embodiments 2-9.

Embodiment 12

A computer-implemented method of generating a circuit comprising:receiving, by at least one software system executing on at least onecomputer, a plurality of circuit specification parameters correspondingto at least one functional circuit component; selecting, by the at leastone software system, a plurality of sub-circuit schematics based on thecircuit specification parameters; and combining, by the at least onesoftware system, the sub-circuit schematics to form a circuit schematicfor the at least one functional circuit component.

Embodiment 13

The method of embodiment 12, wherein the sub-circuit schematics compriseanalog sub-circuit schematics.

Embodiment 14

The method of embodiment 12, wherein the sub-circuit schematics comprisepredefined analog sub-circuit schematics.

Embodiment 15

The method of embodiment 14, wherein the selected plurality ofsub-circuit schematics are a subset of a second plurality of predefinedanalog sub-circuit schematics.

Embodiment 16

The method of embodiment 15, wherein the second plurality of predefinedanalog sub-circuit schematics correspond to the at least one functionalanalog circuit component.

Embodiment 17

The method of embodiment 15, wherein the plurality of sub-circuitschematics include alternative sub-circuit schematics for performing thesame function using different circuitry.

Embodiment 18

The method of embodiment 12, the sub-circuit schematics comprising aplurality of analog pins having different electrical characteristics.

Embodiment 19

The method of embodiment 18, wherein the different electricalcharacteristics are different voltage or current operating ranges.

Embodiment 20

The method of embodiment 12, said sub-circuit schematics comprising aplurality of pins, said combining comprising mapping the pins of thesub-circuit schematics.

Embodiment 21

The method of embodiment 20, wherein one or more pins of said pluralityof pins are analog pins.

Embodiment 22

The method of embodiment 20, wherein said mapping is based on at leastone pin map.

Embodiment 23

The method of embodiment 22, wherein different pin maps specifyconnections between the plurality of sub-circuit schematic pins fordifferent combinations of selected sub-circuit schematics.

Embodiment 24

The method of embodiment 22, wherein the at least one pin map is basedon the selected sub-circuit schematics.

Embodiment 25

The method of embodiment 22, wherein said pin map specifies connectionsbetween pins of the sub-circuit schematics.

Embodiment 26

The method of embodiment 22, wherein said pin map specifies connectionsbetween pins of the sub-circuit schematics and inputs or outputs of thecircuit schematic.

Embodiment 27

The method of embodiment 20, wherein connected pins have predeterminedcompatibility.

Embodiment 28

The method of embodiment 20, wherein mapping the pins comprisesconnecting the pins in the circuit schematic.

Embodiment 29

The method of embodiment 20, wherein the mapping is done automaticallyby the at least one software system based on a plurality of predefinedrules.

Embodiment 30

The method of embodiment 12, wherein different values for the circuitspecification parameters generate different analog circuit schematicshaving different properties for the at least one functional circuitcomponent.

Embodiment 31

The method of embodiment 12, wherein different sets of circuitspecification parameters for different corresponding functional circuitcomponents have different corresponding sets of predefined sub-circuitschematics.

Embodiment 32

The method of embodiment 31, wherein different values for different setsof circuit specification parameters select different subsets ofpredefined sub-circuit schematics from one of a plurality of sets ofpredefined sub-circuit schematics corresponding to different functionalcircuit components.

Embodiment 33

The method of embodiment 12, the plurality of circuit specificationparameters comprising one or more of a parameter specifying a physicalproperty or a parameter specifying an electrical property.

Embodiment 34

The method of embodiment 12, further comprising generating a netlistspecifying the selected sub-circuits.

Embodiment 35

The method of embodiment 34, wherein the netlist is a verilog file.

Embodiment 36

The method of embodiment 12, wherein the sub-circuit schematics arecombined according to a set of rules associated with the at least onefunctional circuit component to form the circuit schematic for the atleast one functional circuit component.

Embodiment 37

The method of embodiment 12, wherein different circuit specificationparameters corresponding to different functional circuit components areprocessed using different associated sets of rules for combiningdifferent sets of sub-circuit schematics.

Embodiment 38

The method of embodiment 12, wherein different functional circuitcomponents have a corresponding unique set of predefined sub-circuitschematics.

Embodiment 39

The method of embodiment 38, wherein each unique set of predefinedsub-circuit schematics comprises one or more unique predefined analogsub-circuit schematics only used for the corresponding functionalcircuit component.

Embodiment 40

The method of embodiment 38, wherein each unique set of predefinedsub-circuit schematics comprises one or more predefined analogsub-circuit schematics used for a plurality of corresponding functionalcircuit components.

Embodiment 41

The method of embodiment 12, the circuit specification parameterscomprising variables and corresponding values.

Embodiment 42

The method of embodiment 41, wherein the variables and values arereceived as text.

Embodiment 43

The method of embodiment 12, wherein the circuit specificationparameters comprise code specifying properties of the circuit schematic.

Embodiment 44

The method of embodiment 43, wherein different values of the code selectdifferent sub-circuit schematics.

Embodiment 45

A computer system for generating a circuit comprising: one or moreprocessors; and a non-transitory computer-readable storage medium havingstored thereon computer executable instructions, which when executed bythe computer system, cause the computer system to perform a methodcomprising: receiving, by at least one software system executing on atleast one computer, a plurality of circuit specification parameterscorresponding to at least one functional circuit component; selecting,by the at least one software system, a plurality of sub-circuitschematics based on the circuit specification parameters; and combining,by the at least one software system, the sub-circuit schematics to forma circuit schematic for the at least one functional circuit component.

The computer system of embodiment 45 in combination with any one or moreof embodiments 12-44.

Embodiment 46

A non-transitory computer-readable storage medium having stored thereoncomputer executable instructions, which when executed by a computersystem, cause the computer system to: receive, by at least one softwaresystem executing on at least one computer, a plurality of circuitspecification parameters corresponding to at least one functionalcircuit component; select, by the at least one software system, aplurality of sub-circuit schematics based on the circuit specificationparameters; and combine, by the at least one software system, thesub-circuit schematics to form a circuit schematic for the at least onefunctional circuit component.

The non-transitory computer-readable storage medium of embodiment 46having stored thereon computer executable instructions, which whenexecuted by a computer system, cause the computer system to perform anyone or more of embodiments 12-44.

Embodiment 47

A system for generating a circuit comprising: means for receiving, by atleast one software system executing on at least one computer, aplurality of circuit specification parameters corresponding to at leastone functional circuit component; means for selecting, by the at leastone software system, a plurality of sub-circuit schematics based on thecircuit specification parameters; and means for combining, by the atleast one software system, the sub-circuit schematics to form a circuitschematic for the at least one functional circuit component.

Embodiment 48

A computer-implemented method of generating a circuit comprising:receiving, by at least one software system executing on at least onecomputer, a plurality of circuit specification parameters correspondingto at least one functional circuit component; and combining, by the atleast one software system, a plurality of sub-circuit layouts based onthe circuit specification parameters to form a circuit layout for the atleast one functional circuit component.

Embodiment 49

The method of embodiment 48, wherein the sub-circuit layouts are analogsub-circuit layouts.

Embodiment 50

The method of embodiment 48, wherein the sub-circuit layouts arepredefined analog sub-circuit layouts.

Embodiment 51

The method of embodiment 50, wherein the subset of the plurality ofpredefined analog sub-circuit layouts correspond to the at least onefunctional analog circuit component.

Embodiment 52

The method of embodiment 48, wherein the plurality of sub-circuitlayouts include alternative sub-circuit layouts for performing the samefunction using different circuitry.

Embodiment 53

The method of embodiment 48, wherein different values for the circuitspecification parameters generate different analog circuit layoutshaving different properties for the at least one functional circuitcomponent.

Embodiment 54

The method of embodiment 48, wherein different sets of circuitspecification parameters for different corresponding functional circuitcomponents have different corresponding sets of predefined sub-circuitlayouts.

Embodiment 55

The method of embodiment 54, wherein different values for each set ofcircuit specification parameters combine different subsets of predefinedsub-circuit layouts from one of a plurality of sets of predefinedsub-circuit layouts corresponding to different functional circuitcomponents.

Embodiment 56

The method of embodiment 48, the plurality of circuit specificationparameters comprising one or more of: a parameter specifying a physicalproperty or a parameter specifying an electrical property.

Embodiment 57

The method of embodiment 48, wherein the circuit specificationparameters comprise variables and corresponding values.

Embodiment 58

The method of embodiment 57, wherein the circuit specificationparameters comprise variables and values are received as text.

Embodiment 59

The method of embodiment 48, wherein the circuit specificationparameters comprise code specifying properties of the circuit layout.

Embodiment 60

The method of embodiment 59, wherein different values of the code selectdifferent sub-circuit layouts.

Embodiment 61

The method of embodiment 48, wherein said combining is based on aplurality of layout placement instructions to arrange of the sub-circuitlayouts in said circuit layout.

Embodiment 62

The method of embodiment 61, wherein at least one of the sub-circuitlayouts has a first height and a first width, and at least one of theother sub-circuit layouts has a second height different than the firstheight and a second width different than the second width.

Embodiment 63

The method of embodiment 61, wherein the layout placement instructionsare predefined.

Embodiment 64

The method of embodiment 61, wherein the layout placement instructionsaccess placement data from an external data record.

Embodiment 65

The method of embodiment 61, wherein the layout placement instructionsare predefined in an external data record.

Embodiment 66

The method of embodiment 61, wherein the layout placement instructionsarrange the sub-circuit layouts according to an x, y-coordinate system.

Embodiment 67

The method of embodiment 61, wherein different circuit layouts may beformed from different sets of sub-circuit layouts associated withdifferent corresponding layout placement instructions.

Embodiment 68

The method of embodiment 61, the plurality of layout placementinstructions comprising one or more layout placement instructions thatarrange one or more sub-circuit layouts at particular coordinates.

Embodiment 69

The method of embodiment 61, the plurality of layout placementinstructions comprising one or more layout placement instructions thatrotate one or more sub-circuit layouts.

Embodiment 70

The method of embodiment 61, wherein the plurality of layout placementinstructions are in a sequence, wherein particular sub-circuit layoutsare arranged serially based on the sequence of the layout placementinstructions.

Embodiment 71

The method of embodiment 61, wherein the plurality of layout placementinstructions comprise executable instructions that access dataspecifying the arrangement of the sub-circuit layouts.

Embodiment 72

The method of embodiment 71, wherein the data specifies one or morelayout placement instructions to be executed for each sub-circuitlayout.

Embodiment 73

The method of embodiment 71, wherein the data specifies x-axis andy-axis coordinates to place a plurality of the sub-circuit layouts.

Embodiment 74

The method of embodiment 71, wherein the data specifies rotation for oneor more of the sub-circuit layouts.

Embodiment 75

The method of embodiment 61, wherein different values for the circuitspecification parameters combine different sub-circuit layouts usingcorresponding layout placement instructions, and wherein particularlayout placement instructions executed are specific to a particularanalog circuit layout generated from particular circuit specificationparameter values.

Embodiment 76

The method of embodiment 61, further comprising executing one of aplurality of sets of layout placement instructions based on a particularcombination of sub-circuit layouts to form said circuit layout, whereindifferent combinations of sub-circuit layouts have correspondingdifferent layout placement instructions.

Embodiment 77

A computer system for generating a circuit comprising: one or moreprocessors; and a non-transitory computer-readable storage medium havingstored thereon computer executable instructions, which when executed bythe computer system, cause the computer system to perform a methodcomprising: receiving, by at least one software system executing on atleast one computer, a plurality of circuit specification parameterscorresponding to at least one functional circuit component; andcombining, by the at least one software system, a plurality ofsub-circuit layouts based on the circuit specification parameters toform a circuit layout for the at least one functional circuit component.

The computer system of embodiment 77 in combination with any one or moreof embodiments 48-76.

Embodiment 78

A non-transitory computer-readable storage medium having stored thereoncomputer executable instructions, which when executed by a computersystem, cause the computer system to: receive, by at least one softwaresystem executing on at least one computer, a plurality of circuitspecification parameters corresponding to at least one functionalcircuit component; and combine, by the at least one software system, aplurality of sub-circuit layouts based on the circuit specificationparameters to form a circuit layout for the at least one functionalcircuit component.

The non-transitory computer-readable storage medium of embodiment 78having stored thereon computer executable instructions, which whenexecuted by a computer system, cause the computer system to perform anyone or more of embodiments 48-76.

Embodiment 79

A system for generating a circuit comprising: means for receiving, by atleast one software system executing on at least one computer, aplurality of circuit specification parameters corresponding to at leastone functional circuit component; and means for combining, by the atleast one software system, a plurality of sub-circuit layouts based onthe circuit specification parameters to form a circuit layout for the atleast one functional circuit component.

Embodiment 80

A computer-implemented method of generating a circuit comprising:generating a first model of a circuit to be generated; generatingcircuit specification parameters corresponding to the first model;selecting a plurality of sub-circuit schematics based on the circuitspecification parameters; and combining the sub-circuit schematics toform a circuit schematic for the circuit to be generated, wherein thecombined sub-circuit schematics form a transistor level model thatcorresponds to the first model.

Embodiment 81

The method of embodiment 80, wherein the first model is a behavioralmodel.

Embodiment 82

The method of embodiment 80, wherein a plurality of behavioral levelsimulations of the first model substantially match a correspondingplurality of transistor level simulations for the transistor levelmodel.

Embodiment 83

The method of embodiment 80, wherein the first model is configurablebased on the circuit specification parameters to produce a plurality ofbehaviors for the first model, and wherein simulations for the firstmodel and the transistor level model substantially match when the firstmodel and the transistor level model have the same parameters.

Embodiment 84

The method of embodiment 80, wherein a plurality of behavioral levelsimulations of the first model match a corresponding plurality oftransistor level simulations for the transistor level model.

Embodiment 85

The method of embodiment 80, wherein the sub-circuit schematics comprisepredefined analog sub-circuit schematics.

Embodiment 86

The method of embodiment 80, further comprising: converting the circuitschematic to a plurality of layout instances; and positioning the layoutinstances based on a layout script to produce a circuit layout.

Embodiment 87

A computer system for generating a circuit comprising: one or moreprocessors; and a non-transitory computer-readable storage medium havingstored thereon computer executable instructions, which when executed bythe computer system, cause the computer system to perform a methodcomprising: generating a first model of a circuit to be generated;generating circuit specification parameters corresponding to the firstmodel; selecting a plurality of sub-circuit schematics based on thecircuit specification parameters; and combining the sub-circuitschematics to form a circuit schematic for the circuit to be generated,wherein the combined sub-circuit schematics form a transistor levelmodel that corresponds to the first model.

Embodiment 88

A non-transitory computer-readable storage medium having stored thereoncomputer executable instructions, which when executed by a computersystem, cause the computer system to: generate a first model of acircuit to be generated; generate circuit specification parameterscorresponding to the first model; select a plurality of sub-circuitschematics based on the circuit specification parameters; and combinethe sub-circuit schematics to form a circuit schematic for the circuitto be generated, wherein the combined sub-circuit schematics form atransistor level model that corresponds to the first model.

The computer system of embodiment 87 in combination with any one or moreof embodiments 80-86.

The non-transitory computer-readable storage medium of embodiment 88having stored thereon computer executable instructions, which whenexecuted by a computer system, cause the computer system to perform anyone or more of embodiments 80-86.

Embodiment 89

A system for generating a circuit comprising: means for generating afirst model of a circuit to be generated; means for generating circuitspecification parameters corresponding to the first model; means forselecting a plurality of sub-circuit schematics based on the circuitspecification parameters; and means for combining the sub-circuitschematics to form a circuit schematic for the circuit to be generated,wherein the combined sub-circuit schematics form a transistor levelmodel that corresponds to the first model.

Embodiment 90

A computer-implemented method of generating a circuit comprising:receiving information specifying a circuit to be generated; selectingone or more pin lists corresponding to one or more sub-circuitschematics based on the information, each pin list comprisingsub-circuit schematic pins for a corresponding sub-circuit schematic;selecting a subset of a plurality of predefined pins for at least onesymbol based on said information; establishing connections between thesub-circuit schematic pins and the subset of the plurality of predefinedpins for the at least one symbol; and generating a circuitspecification, the circuit specification comprising: sub-circuitschematic pins from the one or more pin lists corresponding to one ormore sub-circuit schematics; the subset of the plurality of predefinedpins for the at least one symbol; and the connections between thesub-circuit schematic pins and the subset of the plurality of predefinedpins for the at least one symbol.

Embodiment 91

The method of embodiment 90, further comprising processing the circuitspecification in an EDA tool to produce a circuit schematic.

Embodiment 92

The method of embodiment 90, wherein the pin lists and symbol correspondto a first functional circuit component.

Embodiment 93

The method of embodiment 92, wherein different functional circuitcomponents have different associated sub-circuit schematic pin lists andpredefined pins for functional circuit component symbols.

Embodiment 94

The method of embodiment 90, further comprising retrieving a layoutscript based on the information, wherein the layout script is configuredto automatically position layout instances for a circuit generated fromthe circuit specification.

Embodiment 95

The method of embodiment 90, wherein the information comprisesparameters.

Embodiment 96

The method of embodiment 95, further comprising: retrieving parameterlimits; and comparing the parameters to the parameter limits to verifythe parameters.

Embodiment 97

The method of embodiment 90, further comprising: determining a componentvalue; and encoding the component value in an identifier associated witha plurality of component symbols, wherein the circuit specificationfurther comprises the plurality of component symbols.

Embodiment 98

A computer system for generating a circuit comprising: one or moreprocessors; and a non-transitory computer-readable storage medium havingstored thereon computer executable instructions, which when executed bythe computer system, cause the computer system to perform a methodcomprising: receiving information specifying a circuit to be generated;selecting one or more pin lists corresponding to one or more sub-circuitschematics based on the information, each pin list comprisingsub-circuit schematic pins for a corresponding sub-circuit schematic;selecting a subset of a plurality of predefined pins for at least onesymbol based on said information; establishing connections between thesub-circuit schematic pins and the subset of the plurality of predefinedpins for the at least one symbol; and generating a circuitspecification, the circuit specification comprising: sub-circuitschematic pins from the one or more pin lists corresponding to one ormore sub-circuit schematics; the subset of the plurality of predefinedpins for the at least one symbol; and the connections between thesub-circuit schematic pins and the subset of the plurality of predefinedpins for the at least one symbol.

Embodiment 99

A non-transitory computer-readable storage medium having stored thereoncomputer executable instructions, which when executed by a computersystem, cause the computer system to: receive information specifying acircuit to be generated; select one or more pin lists corresponding toone or more sub-circuit schematics based on the information, each pinlist comprising sub-circuit schematic pins for a correspondingsub-circuit schematic; select a subset of a plurality of predefined pinsfor at least one symbol based on said information; establish connectionsbetween the sub-circuit schematic pins and the subset of the pluralityof predefined pins for the at least one symbol; and generate a circuitspecification, the circuit specification comprising: sub-circuitschematic pins from the one or more pin lists corresponding to one ormore sub-circuit schematics; the subset of the plurality of predefinedpins for the at least one symbol; and the connections between thesub-circuit schematic pins and the subset of the plurality of predefinedpins for the at least one symbol.

The computer system of embodiment 98 in combination with any one or moreof embodiments 90-97.

The non-transitory computer-readable storage medium of embodiment 99having stored thereon computer executable instructions, which whenexecuted by a computer system, cause the computer system to perform anyone or more of embodiments 90-97.

Embodiment 100

A system for generating a circuit comprising: means for receivinginformation specifying a circuit to be generated; means for selectingone or more pin lists corresponding to one or more sub-circuitschematics based on the information, each pin list comprisingsub-circuit schematic pins for a corresponding sub-circuit schematic;means for selecting a subset of a plurality of predefined pins for atleast one symbol based on said information; means for establishingconnections between the sub-circuit schematic pins and the subset of theplurality of predefined pins for the at least one symbol; and means forgenerating a circuit specification, the circuit specificationcomprising: sub-circuit schematic pins from the one or more pin listscorresponding to one or more sub-circuit schematics; the subset of theplurality of predefined pins for the at least one symbol; and theconnections between the sub-circuit schematic pins and the subset of theplurality of predefined pins for the at least one symbol.

Embodiment 101

A computer-implemented method of generating circuit componentscomprising: receiving a total attribute value of a component to begenerated; determining a second attribute value for the component to begenerated based at least on the total attribute value; determining atleast one number N of said components having the second attribute valueto be combined to form the component having the total attribute value;generating a transistor level schematic comprising a plurality ofcomponents configured with the second attribute value; and generating alayout, wherein the layout comprises N layout instances corresponding tothe component configured to produce the total attribute value.

Embodiment 102

The method of embodiment 101, wherein the component to be generated isone of: a transistor, a resistor, or a capacitor.

Embodiment 103

The method of embodiment 101, further comprising generating a circuitspecification specifying a configuration of the N components to producethe total attribute value, wherein the transistor level schematic isgenerated based on the circuit specification.

Embodiment 104

The method of embodiment 101, further comprising receiving at least onelayout parameter, wherein the second attribute value for the componentbe generated is determined based on the at least one layout parameter.

Embodiment 105

The method of embodiment 104, wherein layout parameter specifies alength along at least one dimension of the component to be generated.

Embodiment 106

The method of embodiment 104, wherein layout parameter specifies aresistor layout segment length.

Embodiment 107

The method of embodiment 104, wherein layout parameter specifies apredefined maximum length along the first dimension of a unit capacitor.

Embodiment 108

The method of embodiment 101, wherein the total attribute value is atotal resistance for a resistor to be generated.

Embodiment 109

The method of embodiment 101, wherein the total attribute value is atotal capacitance for a capacitor to be generated.

Embodiment 110

The method of embodiment 101, wherein the total attribute value is atotal gate width determined based on an on resistance for a transistorto be generated.

Embodiment 111

A computer system for generating circuit components comprising: one ormore processors; and a non-transitory computer-readable storage mediumhaving stored thereon computer executable instructions, which whenexecuted by the computer system, cause the computer system to perform amethod comprising: receiving a total attribute value of a component tobe generated; determining a second attribute value for the component begenerated based at least on the total attribute value; determining atleast one number N of said components having the second attribute valueto be combined to form the component having the total attribute value;generating a transistor level schematic comprising a plurality ofcomponents configured with the second attribute value; and generating alayout, wherein the layout comprises N layout instances corresponding tothe component configured to produce the total attribute value.

Embodiment 112

A non-transitory computer-readable storage medium having stored thereoncomputer executable instructions, which when executed by a computersystem, cause the computer system to: receive a total attribute value ofa component to be generated; determine a second attribute value for thecomponent be generated based at least on the total attribute value;determine at least one number N of said components having the secondattribute value to be combined to form the component having the totalattribute value; generate a transistor level schematic comprising aplurality of components configured with the second attribute value; andgenerate a layout, wherein the layout comprises N layout instancescorresponding to the component configured to produce the total attributevalue.

The computer system of embodiment 111 in combination with any one ormore of embodiments 101-110.

The non-transitory computer-readable storage medium of embodiment 112having stored thereon computer executable instructions, which whenexecuted by a computer system, cause the computer system to perform anyone or more of embodiments 101-110.

Embodiment 113

A system for generating circuit components comprising: means forreceiving a total attribute value of a component to be generated; meansfor determining a second attribute value for the component be generatedbased at least on the total attribute value; means for determining atleast one number N of said components having the second attribute valueto be combined to form the component having the total attribute value;means for generating a transistor level schematic comprising a pluralityof components configured with the second attribute value; and means forgenerating a layout, wherein the layout comprises N layout instancescorresponding to the component configured to produce the total attributevalue.

Embodiment 114

A computer-implemented method of generating a circuit comprising:receiving information specifying an analog circuit component to begenerated; retrieving layout parameters based on at least a portion ofsaid information; determining attributes of the analog circuit componentto be generated based on said information and said layout parameters;generating a transistor level schematic of the analog circuit comprisingone or more of the analog circuit components, wherein the one or moreanalog circuit components are configured with said attributes; andgenerating a layout from the transistor level schematic, wherein thelayout comprises a plurality of layout instances corresponding to theone or more analog circuit components, and wherein each layout instancesis automatically positioned in the layout by a layout script based onsaid attributes of the analog circuit component.

Embodiment 115

A computer system for generating a circuit comprising: one or moreprocessors; and a non-transitory computer-readable storage medium havingstored thereon computer executable instructions, which when executed bythe computer system, cause the computer system to perform a methodcomprising: receiving information specifying an analog circuit componentto be generated; retrieving layout parameters based on at least aportion of said information; determining attributes of the analogcircuit component to be generated based on said information and saidlayout parameters; generating a transistor level schematic of the analogcircuit comprising one or more of the analog circuit components, whereinthe one or more analog circuit components are configured with saidattributes; and generating a layout from the transistor level schematic,wherein the layout comprises a plurality of layout instancescorresponding to the one or more analog circuit components, and whereineach layout instances is automatically positioned in the layout by alayout script based on said attributes of the analog circuit component.

Embodiment 116

A non-transitory computer-readable storage medium having stored thereoncomputer executable instructions, which when executed by a computersystem, cause the computer system to: receive information specifying ananalog circuit component to be generated; retrieve layout parametersbased on at least a portion of said information; determine attributes ofthe analog circuit component to be generated based on said informationand said layout parameters; generate a transistor level schematic of theanalog circuit comprising one or more of the analog circuit components,wherein the one or more analog circuit components are configured withsaid attributes; and generate a layout from the transistor levelschematic, wherein the layout comprises a plurality of layout instancescorresponding to the one or more analog circuit components, and whereineach layout instances is automatically positioned in the layout by alayout script based on said attributes of the analog circuit component.

Embodiment 117

A system for generating a circuit comprising: means for receivinginformation specifying an analog circuit component to be generated;means for retrieving layout parameters based on at least a portion ofsaid information; means for determining attributes of the analog circuitcomponent to be generated based on said information and said layoutparameters; means for generating a transistor level schematic of theanalog circuit comprising one or more of the analog circuit components,wherein the one or more analog circuit components are configured withsaid attributes; and means for generating a layout from the transistorlevel schematic, wherein the layout comprises a plurality of layoutinstances corresponding to the one or more analog circuit components,and wherein each layout instances is automatically positioned in thelayout by a layout script based on said attributes of the analog circuitcomponent.

Embodiment 118

A computer-implemented method of generating an electronic componentschematic comprising: receiving information specifying an electroniccircuit to be generated; determining a component value for at least onecomponent of the electronic circuit based on the information; generatinga plurality of component symbols; encoding the component value in anidentifier associated with each of the component symbols; establishingconnections between the component symbols; and generating a circuitspecification to configure the component symbols in series or inparallel.

Embodiment 119

The method of embodiment 118 wherein the identifier comprises a symbolname.

Embodiment 120

The method of embodiment 118 wherein the component is a resistor, andwherein the component value comprises a resistance.

Embodiment 121

The method of embodiment 118 wherein the component is a capacitor, andwherein the component value comprises a capacitance.

Embodiment 122

The method of embodiment 118 wherein the component is a transistor, andwherein the component value comprises a gate width.

Embodiment 123

The method of embodiment 122 wherein the component value furthercomprises a number of fingers.

Embodiment 124

A computer system for generating an electronic component schematiccomprising: one or more processors; and a non-transitorycomputer-readable storage medium having stored thereon computerexecutable instructions, which when executed by the computer system,cause the computer system to perform a method comprising: receivinginformation specifying an electronic circuit to be generated;determining a component value for at least one component of theelectronic circuit based on the information; generating a plurality ofcomponent symbols; encoding the component value in an identifierassociated with each of the component symbols; establishing connectionsbetween the component symbols; and generating a circuit specification toconfigure the component symbols in series or in parallel.

Embodiment 125

A non-transitory computer-readable storage medium having stored thereoncomputer executable instructions, which when executed by a computersystem, cause the computer system to: receive information specifying anelectronic circuit to be generated; determine a component value for atleast one component of the electronic circuit based on the information;generate a plurality of component symbols; encode the component value inan identifier associated with each of the component symbols; establishconnections between the component symbols; and generate a circuitspecification to configure the component symbols in series or inparallel.

The computer system of embodiment 124 in combination with any one ormore of embodiments 118-123.

The non-transitory computer-readable storage medium of embodiment 125having stored thereon computer executable instructions, which whenexecuted by a computer system, cause the computer system to perform anyone or more of embodiments 118-123.

Embodiment 126

A system for generating an electronic component schematic comprising:means for receiving information specifying an electronic circuit to begenerated; means for determining a component value for at least onecomponent of the electronic circuit based on the information; means forgenerating a plurality of component symbols; means for encoding thecomponent value in an identifier associated with each of the componentsymbols; means for establishing connections between the componentsymbols; and means for generating a circuit specification to configurethe component symbols in series or in parallel.

Embodiment 127

A computer-implemented method of generating an electronic componentschematic comprising: receiving a circuit specification specifying oneor more components comprising one or more corresponding identifiers;generating one or more schematic symbols for the one or more components,wherein the one or more schematic symbols are associated with the one ormore corresponding identifiers; reading the identifiers associated withthe one or more symbols; and inserting a schematic representation forthe component into each symbol, wherein one or more attributes of theschematic representation for the component are set based on theidentifier associated with the symbol.

Embodiment 128

The method of embodiment 127 wherein the identifier encodes attributevalues.

Embodiment 129

The method of embodiment 127 wherein the identifier comprises a symbolname.

Embodiment 130

The method of embodiment 129 wherein the symbol name encodes attributevalues.

Embodiment 131

The method of embodiment 127 wherein the component is a resistor, andwherein the one or more attributes comprise a resistance.

Embodiment 132

The method of embodiment 127 wherein the component is a capacitor, andwherein the one or more attributes comprise a capacitance.

Embodiment 133

The method of embodiment 127 wherein the component is a transistor, andwherein the one or more attributes comprise a gate width.

Embodiment 134

The method of embodiment 133 wherein the one or more attributes furthercomprise a number of fingers.

Embodiment 135

A computer system for generating an electronic component schematiccomprising: one or more processors; and a non-transitorycomputer-readable storage medium having stored thereon computerexecutable instructions, which when executed by the computer system,cause the computer system to perform a method comprising: receiving acircuit specification specifying one or more components comprising oneor more corresponding identifiers; generating one or more schematicsymbols for the one or more components, wherein the one or moreschematic symbols are associated with the one or more correspondingidentifiers; reading the identifiers associated with the one or moresymbols; and inserting a schematic representation for the component intoeach symbol, wherein one or more attributes of the schematicrepresentation for the component are set based on the identifierassociated with the symbol.

Embodiment 136

A non-transitory computer-readable storage medium having stored thereoncomputer executable instructions, which when executed by a computersystem, cause the computer system to: receive a circuit specificationspecifying one or more components comprising one or more correspondingidentifiers; generate one or more schematic symbols for the one or morecomponents, wherein the one or more schematic symbols are associatedwith the one or more corresponding identifiers; read the identifiersassociated with the one or more symbols; and insert a schematicrepresentation for the component into each symbol, wherein one or moreattributes of the schematic representation for the component are setbased on the identifier associated with the symbol.

The computer system of embodiment 135 in combination with any one ormore of embodiments 127-134.

The non-transitory computer-readable storage medium of embodiment 136having stored thereon computer executable instructions, which whenexecuted by a computer system, cause the computer system to perform anyone or more of embodiments 127-134.

Embodiment 137

A system for generating an electronic component schematic comprising:means for receiving a circuit specification specifying one or morecomponents comprising one or more corresponding identifiers; means forgenerating one or more schematic symbols for the one or more components,wherein the one or more schematic symbols are associated with the one ormore corresponding identifiers; means for reading the identifiersassociated with the one or more symbols; and means for inserting aschematic representation for the component into each symbol, wherein oneor more attributes of the schematic representation for the component areset based on the identifier associated with the symbol.

Embodiment 138

A computer-implemented method of generating a resistor comprising:receiving a first resistor value; converting the resistor value into aplurality of resistor layout segments; and automatically placing theplurality of resistor layout segments based on one or more layoutplacement instructions to form the first resistor value.

Embodiment 139

The method of embodiment 138 wherein a first resistor layout segment isplaced at an initial position, and other resistor layout segments areplaced at positions offset from the initial position.

Embodiment 140

The method of embodiment 139 wherein the offset is based on a width ofeach resistor layout segment.

Embodiment 141

The method of embodiment 140 wherein the offset is further based onpredefined separation between adjacent layout segments.

Embodiment 142

The method of embodiment 141 wherein the predefined separation is basedon a design rule check (DRC) value.

Embodiment 143

The method of embodiment 139 wherein resistor layout segments are placedin parallel along the length of each resistor layout segment.

Embodiment 144

The method of embodiment 139 wherein resistor layout segments arerotated by an amount specified in the one or more layout placementinstructions.

Embodiment 145

The method of embodiment 139 wherein resistor layout segments aresuccessively placed along an axis according to a polarity specified inthe one or more layout placement instructions.

Embodiment 146

The method of embodiment 138 wherein each resistor layout segment has aunique identifier, the method further comprising sorting the resistorlayout segments based on the unique identifier and successively placingeach resistor layout segment.

Embodiment 147

The method of embodiment 138 wherein a first portion of the resistorlayout segments are configured in series and a second portion of theresistor layout segments are configured in parallel.

Embodiment 148

The method of embodiment 138 wherein at least a first plurality of theresistor layout segments have a same length and width.

Embodiment 149

A computer system for generating a resistor comprising: one or moreprocessors; and a non-transitory computer-readable storage medium havingstored thereon computer executable instructions, which when executed bythe computer system, cause the computer system to perform a methodcomprising: receiving a first resistor value; converting the resistorvalue into a plurality of resistor layout segments; and automaticallyplacing the plurality of resistor layout segments based on one or morelayout placement instructions to form the first resistor value.

Embodiment 150

A non-transitory computer-readable storage medium having stored thereoncomputer executable instructions, which when executed by a computersystem, cause the computer system to: receive a first resistor value;convert the resistor value into a plurality of resistor layout segments;and automatically place the plurality of resistor layout segments basedon one or more layout placement instructions to form the first resistorvalue.

The computer system of embodiment 149 in combination with any one ormore of embodiments 138-148.

The non-transitory computer-readable storage medium of embodiment 150having stored thereon computer executable instructions, which whenexecuted by a computer system, cause the computer system to perform anyone or more of embodiments 138-148.

Embodiment 151

A system for generating a resistor comprising: means for receiving afirst resistor value; means for converting the resistor value into aplurality of resistor layout segments; and means for automaticallyplacing the plurality of resistor layout segments based on one or morelayout placement instructions to form the first resistor value.

Embodiment 152

A computer-implemented method of generating a resistor comprising:receiving a first resistor value; determining one or both of a firstnumber specifying a first plurality of resistor segments to beconfigured in series; and a second number specifying a second pluralityof resistor segments to be configured in parallel, to approximatelyproduce the first resistor value; and generating a circuit specificationto configure the first number of resistor segments in series and/or thesecond number of resistor segments in parallel.

Embodiment 153

The method of embodiment 152 wherein the first resistor value variesacross a range of values.

Embodiment 154

The method of embodiment 152 wherein the first resistor value isreceived as a parameter with an associated resistor component type.

Embodiment 155

The method of embodiment 152 further comprising receiving at least onepredefined physical dimension for a resistor segment, wherein the firstand second plurality of resistor segments each have the at least onepredefined physical dimension, and wherein said determining the firstnumber of resistor segments to be configured in series and the secondnumber of resistor segments to be configured in parallel is based on theat least one predefined physical dimension.

Embodiment 156

The method of embodiment 155 wherein the at least one predefinedphysical dimension includes a predefined resistor segment length.

Embodiment 157

The method of embodiment 156 wherein the at least one predefinedphysical dimension includes a predefined resistor segment width.

Embodiment 158

The method of embodiment 155 wherein the at least one predefinedphysical dimension for the resistor segment is associated with the firstresistor value.

Embodiment 159

The method of embodiment 152 wherein different resistors havingdifferent resistor values have different corresponding predefinedresistor segment lengths.

Embodiment 160

The method of embodiment 152 further comprising receiving a resistivityassociated with the first resistor value, wherein said determining thefirst number of resistor segments to be configured in series and thesecond number of resistor segments to be configured in parallel is basedon the resistivity.

Embodiment 161

The method of embodiment 152 wherein the first resistor value isspecified by a user.

Embodiment 162

The method of embodiment 152 further comprising receiving one or moreparameters, wherein the first resistor value is determined based on saidparameters.

Embodiment 163

The method of embodiment 152 wherein the circuit specification specifiesa plurality of components corresponding to the plurality of resistorsegments and connections between the plurality of components.

Embodiment 164

The method of embodiment 163 wherein the circuit specification is anetlist.

Embodiment 165

The method of embodiment 152 further comprising sending the circuitspecification from a first software system to a second software system,the second software system generating a schematic based on the circuitspecification.

Embodiment 166

The method of embodiment 165 further comprising receiving, by the secondsoftware system, a predefined length and a predefined width for theplurality of resistor segments encoded in identifiers for componentscorresponding to the resistor segments in the circuit specification.

Embodiment 167

The method of embodiment 166 wherein the identifier is a symbol name.

Embodiment 168

The method of embodiment 166 wherein the identifier further encodes aresistor type.

Embodiment 169

The method of embodiment 165 further comprising receiving, by the secondsoftware system, a predefined length and a predefined width for theplurality of resistor segments from a first storage location.

Embodiment 170

The method of embodiment 152 further comprising generating a schematicbased on the circuit specification, the schematic comprising schematicsymbols for the first and second number of resistor segments.

Embodiment 171

The method of embodiment 170 wherein the schematic symbols are emptyschematic symbols comprising a plurality of pins, the method furthercomprising automatically inserting a resistor in each of the schematicsymbols and connecting terminals of the resistor with the pins of theschematic symbol.

Embodiment 172

The method of embodiment 170 further comprising mapping a schematicsymbol name to attributes of the resistor.

Embodiment 173

The method of embodiment 152 further comprising generating a layout, thelayout comprising a plurality of polygons for the first number ofresistor segments in series and the second number of resistor segmentsin parallel.

Embodiment 174

The method of embodiment 173 further comprising executing a plurality ofpredefined layout placement instructions to position the polygons in thelayout.

Embodiment 175

A computer system for generating a resistor comprising: one or moreprocessors; and a non-transitory computer-readable storage medium havingstored thereon computer executable instructions, which when executed bythe computer system, cause the computer system to perform a methodcomprising: receiving a first resistor value; determining one or bothof: a first number specifying a first plurality of resistor segments tobe configured in series; and a second number specifying a secondplurality of resistor segments to be configured in parallel, toapproximately produce the first resistor value; and generating a circuitspecification to configure the first number of resistor segments inseries and/or the second number of resistor segments in parallel.

Embodiment 176

A non-transitory computer-readable storage medium having stored thereoncomputer executable instructions, which when executed by a computersystem, cause the computer system to: receive a first resistor value;determine one or both of: a first number specifying a first plurality ofresistor segments to be configured in series; and a second numberspecifying a second plurality of resistor segments to be configured inparallel, to approximately produce the first resistor value; andgenerate a circuit specification to configure the first number ofresistor segments in series and/or the second number of resistorsegments in parallel.

The computer system of embodiment 175 in combination with any one ormore of embodiments 152-174.

The non-transitory computer-readable storage medium of embodiment 176having stored thereon computer executable instructions, which whenexecuted by a computer system, cause the computer system to perform anyone or more of embodiments 152-174.

Embodiment 177

A system for generating a resistor comprising: means for receiving afirst resistor value; means for determining one or both of: a firstnumber specifying a first plurality of resistor segments to beconfigured in series; and a second number specifying a second pluralityof resistor segments to be configured in parallel, to approximatelyproduce the first resistor value; and means for generating a circuitspecification to configure the first number of resistor segments inseries and/or the second number of resistor segments in parallel.

Embodiment 178

A computer-implemented method of generating a resistor comprising:receiving a resistor value; generating a circuit specificationspecifying a configuration of a plurality of components; generating,based on the circuit specification, a plurality of schematic symbolscorresponding to the plurality of components coupled together based onthe circuit specification, wherein the plurality of schematic symbolsare generated without resistor segments; and automatically inserting aresistor segment in each of the schematic symbols and connectingterminals of the resistors with pins of the schematic symbols, whereinthe plurality of components and inserted resistor segments form aschematic for a resistor network having the resistor value.

Embodiment 179

The method of embodiment 178 wherein the symbols are generated inresponse to the circuit specification as empty symbols.

Embodiment 180

The method of embodiment 178 further comprising assigning attributes tothe resistors.

Embodiment 181

The method of embodiment 180 wherein attributes for the resistors areencoded in the circuit specification.

Embodiment 182

The method of embodiment 180 wherein attributes for the resistors areretrieved from a storage location.

Embodiment 183

The method of embodiment 178 wherein the circuit specification isgenerated by a first software system and the schematic is generated by asecond software system.

Embodiment 184

The method of embodiment 183 wherein the second software system is anelectronic design automation software system.

Embodiment 185

A computer system for generating a resistor comprising: one or moreprocessors; and a non-transitory computer-readable storage medium havingstored thereon computer executable instructions, which when executed bythe computer system, cause the computer system to perform a methodcomprising: receiving a resistor value; generating a circuitspecification specifying a configuration of a plurality of components;generating, based on the circuit specification, a plurality of schematicsymbols corresponding to the plurality of components coupled togetherbased on the circuit specification, wherein the plurality of schematicsymbols are generated without resistor segments; and automaticallyinserting a resistor segment in each of the schematic symbols andconnecting terminals of the resistors with pins of the schematicsymbols, wherein the plurality of components and inserted resistorsegments form a schematic for a resistor network having the resistorvalue.

Embodiment 186

A non-transitory computer-readable storage medium having stored thereoncomputer executable instructions, which when executed by a computersystem, cause the computer system to: receive a resistor value; generatea circuit specification specifying a configuration of a plurality ofcomponents; generate, based on the circuit specification, a plurality ofschematic symbols corresponding to the plurality of components coupledtogether based on the circuit specification, wherein the plurality ofschematic symbols are generated without resistor segments; andautomatically insert a resistor segment in each of the schematic symbolsand connecting terminals of the resistors with pins of the schematicsymbols, wherein the plurality of components and inserted resistorsegments form a schematic for a resistor network having the resistorvalue.

The computer system of embodiment 185 in combination with any one ormore of embodiments 178-184.

The non-transitory computer-readable storage medium of embodiment 186having stored thereon computer executable instructions, which whenexecuted by a computer system, cause the computer system to perform anyone or more of embodiments 178-184.

Embodiment 187

A system for generating a resistor comprising: means for receiving aresistor value; means for generating a circuit specification specifyinga configuration of a plurality of components; means for generating,based on the circuit specification, a plurality of schematic symbolscorresponding to the plurality of components coupled together based onthe circuit specification, wherein the plurality of schematic symbolsare generated without resistor segments; and means for automaticallyinserting a resistor segment in each of the schematic symbols andconnecting terminals of the resistors with pins of the schematicsymbols, wherein the plurality of components and inserted resistorsegments form a schematic for a resistor network having the resistorvalue.

Embodiment 188

A computer-implemented method of generating a resistor comprising:receiving a first resistor value; generating a circuit specificationspecifying a configuration of a plurality of components, wherein theplurality of components correspond to resistor segments having at leastone predefined physical dimension; generating, based on the circuitspecification, a schematic comprising the resistor segmentscorresponding to the plurality of components coupled together based onthe circuit specification to produce the first resistor value; andgenerating, based on the schematic, a layout comprising a plurality ofpolygons corresponding to the resistor segments, wherein the pluralityof polygons are automatically placed in the layout based on the at leastone predefined physical dimension of the resistor segments.

Embodiment 189

A computer system for generating a resistor comprising: one or moreprocessors; and a non-transitory computer-readable storage medium havingstored thereon computer executable instructions, which when executed bythe computer system, cause the computer system to perform a methodcomprising: receiving a first resistor value; generating a circuitspecification specifying a configuration of a plurality of components,wherein the plurality of components correspond to resistor segmentshaving at least one predefined physical dimension; generating, based onthe circuit specification, a schematic comprising the resistor segmentscorresponding to the plurality of components coupled together based onthe circuit specification to produce the first resistor value; andgenerating, based on the schematic, a layout comprising a plurality ofpolygons corresponding to the resistor segments, wherein the pluralityof polygons are automatically placed in the layout based on the at leastone predefined physical dimension of the resistor segments.

Embodiment 190

A non-transitory computer-readable storage medium having stored thereoncomputer executable instructions, which when executed by a computersystem, cause the computer system to: receive a first resistor value;generate a circuit specification specifying a configuration of aplurality of components, wherein the plurality of components correspondto resistor segments having at least one predefined physical dimension;generate, based on the circuit specification, a schematic comprising theresistor segments corresponding to the plurality of components coupledtogether based on the circuit specification to produce the firstresistor value; and generate, based on the schematic, a layoutcomprising a plurality of polygons corresponding to the resistorsegments, wherein the plurality of polygons are automatically placed inthe layout based on the at least one predefined physical dimension ofthe resistor segments.

Embodiment 191

A system for generating a resistor comprising: means for receiving afirst resistor value; means for generating a circuit specificationspecifying a configuration of a plurality of components, wherein theplurality of components correspond to resistor segments having at leastone predefined physical dimension; means for generating, based on thecircuit specification, a schematic comprising the resistor segmentscorresponding to the plurality of components coupled together based onthe circuit specification to produce the first resistor value; and meansfor generating, based on the schematic, a layout comprising a pluralityof polygons corresponding to the resistor segments, wherein theplurality of polygons are automatically placed in the layout based onthe at least one predefined physical dimension of the resistor segments.

Embodiment 192

A computer-implemented method of generating a capacitor comprising:receiving a total capacitance for a capacitor to be generated;determining a number N of unit capacitors having a unit capacitance tobe combined to form the total capacitance; generating a transistor levelschematic comprising N unit capacitor schematics having the unitcapacitance, wherein the N unit capacitor schematics are configured toproduce the total capacitance; and generating a layout comprising Ncapacitor layout elements configured to produce said capacitor.

Embodiment 193

The method of embodiment 192 wherein the total capacitance is producedbased on information specifying a circuit to be generated.

Embodiment 194

The method of embodiment 193 wherein the total capacitance is producedbased on a predefined circuit model for the circuit to be generated.

Embodiment 195

The method of embodiment 192 wherein the total capacitance is receivedas a parameter corresponding to a capacitor functional circuitcomponent.

Embodiment 196

The method of embodiment 192 further comprising comparing the totalcapacitance to a predefined maximum capacitance, wherein the N unitcapacitor schematics are configured in parallel when the totalcapacitance is greater than the predefined maximum capacitance.

Embodiment 197

The method of embodiment 192 further comprising comparing the totalcapacitance to a predefined minimum capacitance, wherein the N unitcapacitor schematics are configured in series when the total capacitanceis less than the predefined minimum capacitance.

Embodiment 198

The method of embodiment 192 wherein the number N of unit capacitors isan integer greater than or equal to one (1).

Embodiment 199

The method of embodiment 192 further comprising: configuring a firstlength corresponding to a first dimension of the N unit capacitors to beless than or equal to a predefined maximum length along the firstdimension; and determining a second length corresponding to a seconddimension of the N unit capacitors based on at least the unitcapacitance and the first length.

Embodiment 200

The method of embodiment 199 wherein the first length is set to thepredefined maximum length along the first dimension.

Embodiment 201

The method of embodiment 199 wherein the first length and second lengthare configured to produce a predefined aspect ratio of the first lengthand the second length.

Embodiment 202

The method of embodiment 199 the method further comprising iterativelyadjusting the first length to produce an adjusted second length until anaspect ratio of the first length and the second length meet apredetermined aspect ratio.

Embodiment 203

The method of embodiment 202 wherein the first length is initially thepredefined maximum length and the first length is iteratively reduced.

Embodiment 204

The method of embodiment 199 further comprising generating a circuitspecification comprising N components corresponding to the N unitcapacitors.

Embodiment 205

The method of embodiment 204 wherein the circuit specification is anetlist.

Embodiment 206

The method of embodiment 204 wherein one or more attributes of the Nunit capacitors are encoded in the circuit specification.

Embodiment 207

The method of embodiment 199 wherein the N unit capacitor schematicshave a first attribute set to the first length and a second attributeset to the second length.

Embodiment 208

The method of embodiment 199 wherein the N capacitor layout elementscomprise polygons having a first dimension equal to the first length anda second dimension equal to the second length.

Embodiment 209

The method of embodiment 192, said generating a transistor levelschematic comprising: generating N schematic symbols; and automaticallyinserting into each of the N schematic symbols a capacitor symbolcomponent.

Embodiment 210

A computer system for generating a capacitor comprising: one or moreprocessors; and a non-transitory computer-readable storage medium havingstored thereon computer executable instructions, which when executed bythe computer system, cause the computer system to perform a methodcomprising: receiving a total capacitance for a capacitor to begenerated; determining a number N of unit capacitors having a unitcapacitance to be combined to form the total capacitance; generating atransistor level schematic comprising N unit capacitor schematics havingthe unit capacitance, wherein the N unit capacitor schematics areconfigured to produce the total capacitance; and generating a layoutcomprising N capacitor layout elements configured to produce saidcapacitor.

Embodiment 211

A non-transitory computer-readable storage medium having stored thereoncomputer executable instructions, which when executed by a computersystem, cause the computer system to: receive a total capacitance for acapacitor to be generated; determine a number N of unit capacitorshaving a unit capacitance to be combined to form the total capacitance;generate a transistor level schematic comprising N unit capacitorschematics having the unit capacitance, wherein the N unit capacitorschematics are configured to produce the total capacitance; and generatea layout comprising N capacitor layout elements configured to producesaid capacitor.

The computer system of embodiment 210 in combination with any one ormore of embodiments 192-209.

The non-transitory computer-readable storage medium of embodiment 211having stored thereon computer executable instructions, which whenexecuted by a computer system, cause the computer system to perform anyone or more of embodiments 192-209.

Embodiment 212

A system for generating a capacitor comprising: means for receiving atotal capacitance for a capacitor to be generated; means for determininga number N of unit capacitors having a unit capacitance to be combinedto form the total capacitance; means for generating a transistor levelschematic comprising N unit capacitor schematics having the unitcapacitance, wherein the N unit capacitor schematics are configured toproduce the total capacitance; and means for generating a layoutcomprising N capacitor layout elements configured to produce saidcapacitor.

Embodiment 213

A computer-implemented method of generating a resistor dividercomprising: receiving a parameters specifying a resistor divider to begenerated; determining a plurality of resistor values corresponding toresistors between one or more output taps of the resistor divider; foreach resistor value, determining a plurality of resistor segments toproduce each of the plurality of resistor values; generating a circuitspecification to configure each plurality of resistor segments to formthe plurality of resistor values; and generating a transistor levelschematic comprising the plurality of resistor segments to produce saidresistor divider.

Embodiment 214

The method of embodiment 213, wherein determining a plurality ofresistor segments comprises determining at least one first numberspecifying a first plurality of resistor segments to be configured inseries.

Embodiment 215

The method of embodiment 213, wherein determining a plurality ofresistor segments comprises determining at least one first numberspecifying a first plurality of resistor segments to be configured inparallel.

Embodiment 216

The method of embodiment 213, wherein determining a plurality ofresistor segments comprises determining at least one first numberspecifying a first plurality of resistor segments to be configured inseries and at least one second number specifying a second plurality ofresistor segments to be configured in parallel.

Embodiment 217

The method of embodiment 213, wherein the parameters specify a totalresistance of the resistor divider, and wherein the plurality ofresistor values are determined based on the total resistance of theresistor divider.

Embodiment 218

The method of embodiment 213, wherein the parameters specify one or moreoutput taps, wherein the plurality of resistor values is equal to anumber of output taps plus one (1).

Embodiment 219

The method of embodiment 218, wherein the parameters specify voltages ateach output tap, wherein the plurality of resistor values are determinedbased on a number of output taps and the voltages at each output tap.

Embodiment 220

The method of embodiment 218, wherein the parameters specify voltages ateach output tap as one or more percentages, wherein the plurality ofresistor values are determined based on a number of output taps and adifference in percentage across two of: an input, a plurality of outputtaps, and a bottom.

Embodiment 221

The method of embodiment 213, wherein the parameters specify an enable,the method further comprising specifying, in the circuit specification,one or more sub-circuit schematics, wherein the specified sub-circuitschematics are configured to receive an input to enable or disable theresistor divider.

Embodiment 222

The method of embodiment 221, wherein the sub-circuit schematicscomprise a switch.

Embodiment 223

The method of embodiment 222, wherein the switch is coupled between aninput of the resistor divider and one or more terminals of top resistorsegments of the resistor divider.

Embodiment 224

The method of embodiment 222, wherein the switch is coupled between areference input of the resistor divider and one or more terminals ofbottom resistor segments of the resistor divider.

Embodiment 225

The method of embodiment 222, wherein the switch is coupled between anoutput tap of the resistor divider and one or more terminals ofintermediate resistor segments of the resistor divider.

Embodiment 226

A computer system for generating a resistor divider comprising: one ormore processors; and a non-transitory computer-readable storage mediumhaving stored thereon computer executable instructions, which whenexecuted by the computer system, cause the computer system to perform amethod comprising: receiving a parameters specifying a resistor dividerto be generated; determining a plurality of resistor valuescorresponding to resistors between one or more output taps of theresistor divider; for each resistor value, determining a plurality ofresistor segments to produce each of the plurality of resistor values;generating a circuit specification to configure each plurality ofresistor segments to form the plurality of resistor values; andgenerating a transistor level schematic comprising the plurality ofresistor segments to produce said resistor divider.

Embodiment 227

A non-transitory computer-readable storage medium having stored thereoncomputer executable instructions, which when executed by a computersystem, cause the computer system to: receive a parameters specifying aresistor divider to be generated; determine a plurality of resistorvalues corresponding to resistors between one or more output taps of theresistor divider; for each resistor value, determine a plurality ofresistor segments to produce each of the plurality of resistor values;generate a circuit specification to configure each plurality of resistorsegments to form the plurality of resistor values; and generate atransistor level schematic comprising the plurality of resistor segmentsto produce said resistor divider.

The computer system of embodiment 226 in combination with any one ormore of embodiments 213-225.

The non-transitory computer-readable storage medium of embodiment 227having stored thereon computer executable instructions, which whenexecuted by a computer system, cause the computer system to perform anyone or more of embodiments 213-225.

Embodiment 228

A system for generating a resistor divider comprising: means forreceiving a parameters specifying a resistor divider to be generated;means for determining a plurality of resistor values corresponding toresistors between one or more output taps of the resistor divider, andfor each resistor value, determining a plurality of resistor segments toproduce each of the plurality of resistor values; means for generating acircuit specification to configure each plurality of resistor segmentsto form the plurality of resistor values; and means for generating atransistor level schematic comprising the plurality of resistor segmentsto produce said resistor divider.

Embodiment 229

A computer-implemented method of generating a transistor comprising:receiving information specifying a transistor to be generated, saidinformation comprising an on resistance of the transistor to begenerated; determining a total width of a gate of the transistor to begenerated based at least on the on resistance; determining a firstwidth, a number of fingers (F), and a number of device cells (P) basedon the total width; generating a transistor level schematic comprisingone or more transistors configured with the first width and the numberof fingers (F); and generating a layout, wherein the layout comprises Pdevice cells, each device cell comprising a plurality of gatescorresponding to said number of fingers (F) each gate having said firstwidth, wherein the device cells are configured in a two-dimensionalarray.

Embodiment 230

The method of embodiment 229 wherein transistor level schematiccomprises one transistor having a multiplier attribute (M) equal to saidnumber of device cells (P).

Embodiment 231

The method of embodiment 229 wherein transistor level schematiccomprises P transistors configured in parallel.

Embodiment 232

The method of embodiment 229 wherein the P device cells have aprogrammable aspect ratio.

Embodiment 233

The method of embodiment 232 wherein the aspect ratio is greater than0.5 and less than 1.

Embodiment 234

The method of embodiment 232 wherein the aspect ratio is between about⅔rds and about ¾ths.

Embodiment 235

The method of embodiment 229 wherein the two-dimensional array comprisesan equal number of rows and columns of device cells.

Embodiment 236

The method of embodiment 229 wherein the number of device cells (P) is aperfect square.

Embodiment 237

The method of embodiment 229 wherein the first width, first number offingers, and the number of device cells (P) are determined based on amaximum width, and a maximum number of fingers.

Embodiment 238

The method of embodiment 237 further comprising determining the numberof device cells (P) and the number of fingers (F) by increasing thenumber of device cells (P) across a plurality of increasing values todetermine the number of fingers (F) obtainable based on a current numberof device cells, the maximum width, and the maximum number of fingers.

Embodiment 239

The method of embodiment 237 the method further comprising: iterativelyincreasing the number of device cells (P) across a plurality of values;determining if the total width is obtainable from a current value of P,the maximum width, and the maximum number of fingers; if the total widthis not obtainable from the current value of P, the maximum width, andthe maximum number of fingers, then increasing the value of P, andrepeating said determining step; and if the total width is obtainablefrom the current value of P, the maximum width, and the maximum numberof fingers, then setting the number of device cells (P) to the currentvalue of P and setting the number of fingers (F) based on the maximumwidth and the current value of P.

Embodiment 240

The method of embodiment 238 further comprising determining a firstlength along a first dimension of a device cell based on the number offingers (F) and a first plurality of predefined offset values.

Embodiment 241

The method of embodiment 240 wherein the plurality of predefined offsetvalues are selected based on a transistor type.

Embodiment 242

The method of embodiment 240 further comprising determining a secondlength of the device cell based on the first length and a predefinedaspect ratio.

Embodiment 243

The method of embodiment 242 wherein the aspect ratio is programmable.

Embodiment 244

The method of embodiment 242 further comprising determining the firstwidth based on the second length and at least one second predefinedoffset value.

Embodiment 245

The method of embodiment 237 wherein the maximum width and maximumnumber of fingers are predefined values.

Embodiment 246

The method of embodiment 229 further comprising generating a circuitspecification specifying one or more transistors having the first widthand the number of fingers (F), wherein the circuit specification is usedto generate the transistor level schematic.

Embodiment 247

The method of embodiment 246 wherein the information specifying atransistor to be generated specifies a device type, and wherein thecircuit specification specifies one or more p-type transistors or n-typetransistors based on the device type.

Embodiment 248

The method of embodiment 246 wherein the information specifying atransistor to be generated specifies a maximum drain-to-source voltage,and wherein the circuit specification specifies one of a plurality oftransistors based on the maximum drain-to-source voltage.

Embodiment 249

The method of embodiment 246 wherein the information specifying atransistor to be generated specifies a maximum gate-to-source voltage,and wherein the circuit specification specifies one of a plurality oftransistors based on the maximum gate-to-source voltage.

Embodiment 250

The method of embodiment 229 wherein determining the total width of thegate of the transistor to be generated based at least on the onresistance comprises: selecting one set of a plurality of sets ofregression coefficients based on a transistor type of the transistor tobe generated; determining the total width based on the on resistance andthe selected set of regression coefficients.

Embodiment 251

The method of embodiment 250 wherein the transistor type is a powertransistor.

Embodiment 252

The method of embodiment 250 wherein the transistor type is a signaltransistor.

Embodiment 253

The method of embodiment 229 wherein the information specifying atransistor to be generated specifies a replica transistor, and whereinthe transistor level schematic comprises a replica transistor having agate coupled to one or more gates of the one or more transistors and adrain coupled to one or more drains of the one or more transistors.

Embodiment 254

The method of embodiment 253 wherein the information specifying atransistor to be generated specifies a replica gain, and wherein a widthof the replica transistor is determined based on the total width of thetransistor to be generated.

Embodiment 255

The method of embodiment 229 wherein the information specifying atransistor to be generated specifies a Kelvin connection, and whereinthe transistor level schematic comprises a Kelvin source terminalcoupled to one or more sources of the one or more transistors and aKelvin drain terminal coupled to one or more drains of the one or moretransistors.

Embodiment 256

The method of embodiment 255 wherein the transistor level schematicfurther comprises a first resistor configured between the Kelvin sourceterminal and the one or more source terminals of the one or moretransistors and a second resistor configured between the Kelvin drainterminal and the one or more drains of the one or more transistors

Embodiment 257

The method of embodiment 229 wherein said generating a layout comprisingexecuting one or more layout placement instructions, wherein the layoutplacement instructions successively place the P device cells at aninitial position and P−1 other positions offset from the initialposition by an integer number of x-axis offsets and y-axis offsets.

Embodiment 258

The method of embodiment 257 wherein the executed layout placementinstructions are executed based on a transistor type.

Embodiment 259

The method of embodiment 257 wherein the x-axis offsets and y-axisoffsets are calculated based on the first width and the number offingers (F).

Embodiment 260

The method of embodiment 257 wherein said generating a layout furthercomprising automatically placing a plurality of metallization stripsacross the two-dimensional array of device cells.

Embodiment 261

The method of embodiment 260 wherein a number of metallization stripsacross each device cell is determined based on the first width and apredefined maximum strip width.

Embodiment 262

The method of embodiment 260 wherein the metallization strips are placedbased on predefined offsets selected based on a transistor type of thetransistor to be generated.

Embodiment 263

A computer system for generating a transistor comprising: one or moreprocessors; and a non-transitory computer-readable storage medium havingstored thereon computer executable instructions, which when executed bythe computer system, cause the computer system to perform a methodcomprising: receiving information specifying a transistor to begenerated, said information comprising an on resistance of thetransistor to be generated; determining a total width of a gate of thetransistor to be generated based at least on the on resistance;determining a first width, a number of fingers (F), and a number ofdevice cells (P) based on the total width; generating a transistor levelschematic comprising one or more transistors configured with the firstwidth and the number of fingers (F); and generating a layout, whereinthe layout comprises P device cells, each device cell comprising aplurality of gates corresponding to said number of fingers (F) each gatehaving said first width, wherein the device cells are configured in atwo-dimensional array.

Embodiment 264

A non-transitory computer-readable storage medium having stored thereoncomputer executable instructions, which when executed by a computersystem, cause the computer system to: receive information specifying atransistor to be generated, said information comprising an on resistanceof the transistor to be generated; determine a total width of a gate ofthe transistor to be generated based at least on the on resistance;determine a first width, a number of fingers (F), and a number of devicecells (P) based on the total width; generate a transistor levelschematic comprising one or more transistors configured with the firstwidth and the number of fingers (F); and generate a layout, wherein thelayout comprises P device cells, each device cell comprising a pluralityof gates corresponding to said number of fingers (F) each gate havingsaid first width, wherein the device cells are configured in atwo-dimensional array.

The computer system of embodiment 263 in combination with any one ormore of embodiments 229-262.

The non-transitory computer-readable storage medium of embodiment 264having stored thereon computer executable instructions, which whenexecuted by a computer system, cause the computer system to perform anyone or more of embodiments 229-262.

Embodiment 265

A system for generating a transistor comprising: means for receivinginformation specifying a transistor to be generated, said informationcomprising an on resistance of the transistor to be generated; means fordetermining a total width of a gate of the transistor to be generatedbased at least on the on resistance; means for determining a firstwidth, a number of fingers (F), and a number of device cells (P) basedon the total width; means for generating a transistor level schematiccomprising one or more transistors configured with the first width andthe number of fingers (F); and means for generating a layout, whereinthe layout comprises P device cells, each device cell comprising aplurality of gates corresponding to said number of fingers (F) each gatehaving said first width, wherein the device cells are configured in atwo-dimensional array.

Embodiment 266

A computer-implemented method of generating a transistor comprising:receiving information specifying a transistor to be generated, theinformation comprising an on resistance; calculating area from onresistance; determining a total width based on the area and a predefinedlength; determining a number of device cells (P) and a number of fingers(F) based on the total width, a predefined maximum width, and apredefined maximum number of fingers; determining a first length along afirst dimension of a device cell based the number of fingers (F);determining a second length along a second dimension of the device cellbased on a programmed ratio of the first length and the second length;determining a first gate width based on the second dimension; andconfiguring one or more transistors in a transistor level schematic withthe first gate width and said number of fingers (F).

Embodiment 267

The method of embodiment 266 wherein the transistor level schematiccomprises one transistor having a multiplier attribute (M) equal to saidnumber of device cells (P).

Embodiment 268

The method of embodiment 266 wherein the transistor level schematiccomprises P transistors configured in parallel.

Embodiment 269

The method of embodiment 266 wherein the number of device cells (P) isperfect square.

Embodiment 270

A computer system for generating a circuit comprising: one or moreprocessors; and a non-transitory computer-readable storage medium havingstored thereon computer executable instructions, which when executed bythe computer system, cause the computer system to perform a methodcomprising: receiving information specifying a transistor to begenerated, the information comprising at least an on resistance;calculating area from on resistance; determining a total width based onthe area and a predefined length; determining a number of device cells(P) and a number of fingers (F) based on the total width, a predefinedmaximum width, and a predefined maximum number of fingers; determining afirst length along a first dimension of a device cell based the numberof fingers (F); determining a second length along a second dimension ofthe device cell based on a programmed ratio of the first length and thesecond length; determining a first gate width based on the seconddimension; and configuring one or more transistors in a transistor levelschematic with the first gate width and said number of fingers (F).

Embodiment 271

A non-transitory computer-readable storage medium having stored thereoncomputer executable instructions, which when executed by a computersystem, cause the computer system to: receive information specifying atransistor to be generated, the information comprising at least an onresistance; calculate area from on resistance; determine a total widthbased on the area and a predefined length; determine a number of devicecells (P) and a number of fingers (F) based on the total width, apredefined maximum width, and a predefined maximum number of fingers;determine a first length along a first dimension of a device cell basedthe number of fingers (F); determine a second length along a seconddimension of the device cell based on a programmed ratio of the firstlength and the second length; determine a first gate width based on thesecond dimension; and configure one or more transistors in a transistorlevel schematic with the first gate width and said number of fingers(F).

The computer system of embodiment 270 in combination with any one ormore of embodiments 266-269.

The non-transitory computer-readable storage medium of embodiment 271having stored thereon computer executable instructions, which whenexecuted by a computer system, cause the computer system to perform anyone or more of embodiments 266-269.

Embodiment 272

A system for generating a transistor comprising: means for receivinginformation specifying a transistor to be generated, the informationcomprising an on resistance; means for calculating area from onresistance; means for determining a total width based on the area and apredefined length; means for determining a number of device cells (P)and a number of fingers (F) based on the total width, a predefinedmaximum width, and a predefined maximum number of fingers; means fordetermining a first length along a first dimension of a device cellbased the number of fingers (F); means for determining a second lengthalong a second dimension of the device cell based on a programmed ratioof the first length and the second length; means for determining a firstgate width based on the second dimension; and means for configuring oneor more transistors in a transistor level schematic with the first gatewidth and said number of fingers (F).

Embodiment 273

A computer-implemented method comprising: generating a plurality of datasets for a plurality of transistors, each data set comprising values ofon resistance obtained for a plurality of gate widths for a particulartransistor of the plurality of transistors; generating a plurality ofcoefficient sets comprising one or more regression coefficients based ona regression equation applied to each of the plurality of data sets;receiving information specifying an on resistance and a transistor ofsaid plurality of transistors; selecting one coefficient set of theplurality of coefficient sets based on the specified transistor of saidplurality of transistors; and determining a gate width based on said onresistance and the selected coefficient set.

Embodiment 274

A computer system for generating a circuit comprising: one or moreprocessors; and a non-transitory computer-readable storage medium havingstored thereon computer executable instructions, which when executed bythe computer system, cause the computer system to perform a methodcomprising: generating a plurality of data sets for a plurality oftransistors, each data set comprising values of on resistance obtainedfor a plurality of gate widths for a particular transistor of theplurality of transistors; generating a plurality of coefficient setscomprising one or more regression coefficients based on a regressionequation applied to each of the plurality of data sets; receivinginformation specifying an on resistance and a transistor of saidplurality of transistors; selecting one coefficient set of the pluralityof coefficient sets based on the specified transistor of said pluralityof transistors; and determining a gate width based on said on resistanceand the selected coefficient set.

Embodiment 275

A non-transitory computer-readable storage medium having stored thereoncomputer executable instructions, which when executed by a computersystem, cause the computer system to: generate a plurality of data setsfor a plurality of transistors, each data set comprising values of onresistance obtained for a plurality of gate widths for a particulartransistor of the plurality of transistors; generate a plurality ofcoefficient sets comprising one or more regression coefficients based ona regression equation applied to each of the plurality of data sets;receive information specifying an on resistance and a transistor of saidplurality of transistors; select one coefficient set of the plurality ofcoefficient sets based on the specified transistor of said plurality oftransistors; and determine a gate width based on said on resistance andthe selected coefficient set.

Embodiment 276

A system for generating a circuit comprising: means for generating aplurality of data sets for a plurality of transistors, each data setcomprising values of on resistance obtained for a plurality of gatewidths for a particular transistor of the plurality of transistors;means for generating a plurality of coefficient sets comprising one ormore regression coefficients based on a regression equation applied toeach of the plurality of data sets; means for receiving informationspecifying an on resistance and a transistor of said plurality oftransistors; means for selecting one coefficient set of the plurality ofcoefficient sets based on the specified transistor of said plurality oftransistors; and means for determining a gate width based on said onresistance and the selected coefficient set.

Embodiment 277

A computer-implemented method of generating a transistor comprising:receiving information specifying a transistor to be generated;retrieving predefined layout parameters based on at least a portion ofsaid information; determining attributes of the transistor to begenerated based on said information and said layout parameters, theattributes comprising at a width, a number of fingers, and a number ofdevice cells; generating a transistor level schematic of the transistorto be generated comprising one or more transistor schematics, whereinthe one or more transistor schematics are configured based on saidattributes; and generating a layout of the transistor to be generatedfrom the transistor level schematic, wherein the layout comprises thenumber of device cells, and wherein each device cell is automaticallypositioned in the layout by layout placement instructions based on saidattributes.

Embodiment 278

A computer system for generating a transistor comprising: one or moreprocessors; and a non-transitory computer-readable storage medium havingstored thereon computer executable instructions, which when executed bythe computer system, cause the computer system to perform a methodcomprising: receiving information specifying a transistor to begenerated; retrieving predefined layout parameters based on at least aportion of said information; determining attributes of the transistor tobe generated based on said information and said layout parameters, theattributes comprising at a width, a number of fingers, and a number ofdevice cells; generating a transistor level schematic of the transistorto be generated comprising one or more transistor schematics, whereinthe one or more transistor schematics are configured based on saidattributes; and generating a layout of the transistor to be generatedfrom the transistor level schematic, wherein the layout comprises thenumber of device cells, and wherein each device cell is automaticallypositioned in the layout by layout placement instructions based on saidattributes.

Embodiment 279

A non-transitory computer-readable storage medium having stored thereoncomputer executable instructions, which when executed by a computersystem, cause the computer system to: receive information specifying atransistor to be generated; retrieve predefined layout parameters basedon at least a portion of said information; determine attributes of thetransistor to be generated based on said information and said layoutparameters, the attributes comprising at a width, a number of fingers,and a number of device cells; generate a transistor level schematic ofthe transistor to be generated comprising one or more transistorschematics, wherein the one or more transistor schematics are configuredbased on said attributes; and generate a layout of the transistor to begenerated from the transistor level schematic, wherein the layoutcomprises the number of device cells, and wherein each device cell isautomatically positioned in the layout by layout placement instructionsbased on said attributes.

Embodiment 280

A system for generating a transistor comprising: means for receivinginformation specifying a transistor to be generated; means forretrieving predefined layout parameters based on at least a portion ofsaid information; means for determining attributes of the transistor tobe generated based on said information and said layout parameters, theattributes comprising at a width, a number of fingers, and a number ofdevice cells; means for generating a transistor level schematic of thetransistor to be generated comprising one or more transistor schematics,wherein the one or more transistor schematics are configured based onsaid attributes; and means for generating a layout of the transistor tobe generated from the transistor level schematic, wherein the layoutcomprises the number of device cells, and wherein each device cell isautomatically positioned in the layout by layout placement instructionsbased on said attributes.

Embodiment 281

A computer-implemented method of generating a transistor layoutcomprising: converting one or more transistors into a plurality oflayout instances based on attributes of the transistors; and executing apredefined layout script, the predefined layout script positioning theplurality of layout instances as a 2-dimensional array to form a layoutfor the transistor.

Embodiment 282

The method of embodiment 281 wherein the layout script is associatedwith a circuit schematic including said transistor.

Embodiment 283

The method of embodiment 281 wherein transistor is a field effecttransistor.

Embodiment 284

The method of embodiment 283 wherein transistor is a power field effecttransistor.

Embodiment 285

The method of embodiment 281 further comprising determining a first gatewidth, a number of fingers (F), and a number of device cells (P) basedon the total gate width for the transistors.

Embodiment 286

The method of embodiment 281 wherein the one or more transistors are aplurality of transistor configured in parallel having the sameattributes, and wherein a multiplier attribute of each transistor isequal to 1.

Embodiment 287

The method of embodiment 281 wherein the one or more transistors are asingle transistor having a multiplier attribute greater than 1.

Embodiment 288

The method of embodiment 281 wherein a number of (P) the layoutinstances is a perfect square.

Embodiment 289

The method of embodiment 281 wherein an aspect ratio of the layoutinstances is programmable.

Embodiment 290

The method of embodiment 281 wherein the layout script comprises atleast one layout placement instruction that specifies an initialposition for a first layout instance.

Embodiment 291

The method of embodiment 290 wherein a single layout placementinstruction places the plurality of layout instances.

Embodiment 292

The method of embodiment 290 wherein the at least one layout placementinstruction specifies an x-step and a y-step between the layoutinstances.

Embodiment 293

The method of embodiment 290 wherein the at least one layout placementinstruction specifies a number of columns and a number of rows for the2-dimensional array.

Embodiment 294

A computer system for generating a transistor layout comprising: one ormore processors; and a non-transitory computer-readable storage mediumhaving stored thereon computer executable instructions, which whenexecuted by the computer system, cause the computer system to perform amethod comprising: converting one or more transistors into a pluralityof layout instances based on attributes of the transistors; andexecuting a predefined layout script, the predefined layout scriptpositioning the plurality of layout instances as a 2-dimensional arrayto form a layout for the transistor.

Embodiment 295

A non-transitory computer-readable storage medium having stored thereoncomputer executable instructions, which when executed by a computersystem, cause the computer system to: convert one or more transistorsinto a plurality of layout instances based on attributes of thetransistors; and execute a predefined layout script, the predefinedlayout script positioning the plurality of layout instances as a2-dimensional array to form a layout for the transistor.

The computer system of embodiment 294 in combination with any one ormore of embodiments 281-293.

The non-transitory computer-readable storage medium of embodiment 295having stored thereon computer executable instructions, which whenexecuted by a computer system, cause the computer system to perform anyone or more of embodiments 281-293.

Embodiment 296

A computer system for generating a transistor layout comprising: meansfor converting one or more transistors into a plurality of layoutinstances based on attributes of the transistors; and means forexecuting a predefined layout script, the predefined layout scriptpositioning the plurality of layout instances as a 2-dimensional arrayto form a layout for the transistor.

Embodiment 297

A computer-implemented method of generating a circuit layout comprising:specifying a circuit schematic to be converted to said circuit layout;receiving a layout script associated with the circuit schematic, thelayout script configured to position a plurality of layout instancesgenerated from the circuit schematic; converting the circuit schematicinto the plurality of layout instances; and positioning the plurality oflayout instances based on the layout script to produce said circuitlayout.

Embodiment 298

The method of embodiment 297 wherein the circuit schematic is atransistor level circuit schematic for an analog circuit or mixed signalcircuit.

Embodiment 299

The method of embodiment 297 wherein one or more of the plurality oflayout instances are predefined layouts for sub-circuit schematics.

Embodiment 300

The method of embodiment 299 wherein the layout script comprising areference to a library where a particular layout instance is stored.

Embodiment 301

The method of embodiment 297 wherein a first subset of the plurality oflayout instances correspond to a plurality of resistors.

Embodiment 302

The method of embodiment 297 wherein a first subset of the plurality oflayout instances correspond to a plurality of capacitors.

Embodiment 303

The method of embodiment 297 wherein the layout script specifies aparticular placement for each of the plurality of layout instances.

Embodiment 304

The method of embodiment 297 wherein the circuit schematic correspondsto a first circuit schematic of a plurality of circuit schematics, andwherein the layout script is configured to position layout instances foreach of the plurality of circuit schematics.

Embodiment 305

The method of embodiment 304 wherein the plurality of circuit schematicsperform a first function.

Embodiment 306

The method of embodiment 304 wherein the layout script performs aplurality of placement operations on layout instances from differentcircuit schematics, and wherein placement operations on layout instancescorresponding to the first circuit schematic are executed and placementoperations on layout instances corresponding to other circuit schematicsare not executed.

Embodiment 307

The method of embodiment 297 wherein the layout script comprises aplurality of layout placement instructions to position one or more ofthe layout instances.

Embodiment 308

The method of embodiment 307 wherein the plurality of layout placementinstructions comprise corresponding code for implementing placementoperations corresponding to each layout placement instruction.

Embodiment 309

The method of embodiment 308 wherein the code is a layout placementinstruction script.

Embodiment 310

The method of embodiment 307 wherein the layout placement instructionsreceive positioning parameters specifying placement of the one or morelayout instances.

Embodiment 311

The method of embodiment 307 wherein a subset of the layout placementinstructions comprise a reference to a particular layout instance of theplurality of layout instances.

Embodiment 312

The method of embodiment 311 wherein the reference is a cell name.

Embodiment 313

The method of embodiment 311 wherein the reference is an instance name.

Embodiment 314

The method of embodiment 307 wherein one or more layout placementinstructions specify a placement location for one or more correspondinglayout instances of the plurality of layout instances.

Embodiment 315

The method of embodiment 307 wherein one or more layout placementinstructions specify a particular layout instance, an x-axis coordinate,and a y-axis coordinate for positioning the particular layout instance.

Embodiment 316

The method of embodiment 315 wherein one or more layout placementinstructions further specify a library name where the particular layoutinstance is stored.

Embodiment 317

The method of embodiment 315 wherein one or more layout placementinstructions further specify a rotation of the particular layoutinstance.

Embodiment 318

The method of embodiment 307 wherein a first layout placementinstruction of said plurality of layout placement instructions positionsa first subset of the plurality of layout instances.

Embodiment 319

The method of embodiment 318 wherein the first subset of the pluralityof layout instances are predefined layouts for sub-circuit schematics.

Embodiment 320

The method of embodiment 318 wherein the first subset of the pluralityof layout instances are passive layout components.

Embodiment 321

The method of embodiment 320 wherein the plurality of passive layoutcomponents are resistor layout components.

Embodiment 322

The method of embodiment 320 wherein the plurality of passive componentsare capacitor layout components.

Embodiment 323

The method of embodiment 318 wherein a first layout placementinstruction specifies a step direction along one of a plurality of axes.

Embodiment 324

The method of embodiment 318 wherein the first layout placementinstruction specifies a starting position and a step between the firstsubset of layout instances.

Embodiment 325

The method of embodiment 324 wherein the step specifies a distancebetween adjacent boundaries of the first subset of layout instances.

Embodiment 326

The method of embodiment 324 wherein the step is greater than or equalto a length of a boundary along a first axis of the first subset oflayout instances.

Embodiment 327

The method of embodiment 318 wherein the first layout placementinstruction further specifies a maximum distance for successivelyplacing layout instances along an axis.

Embodiment 328

The method of embodiment 327 wherein the maximum distance is associatedwith a length of one of the plurality of layout instances.

Embodiment 329

The method of embodiment 327 wherein the layout instances aresuccessively placed along a first axis from the starting position up tosecond position based on said distance, and, when a first portion of thelayout instances span a space between the starting position and thesecond position, a second portion of the layout instances aresuccessively placed along the first axis between a third position,offset from the starting position along a second axis, and a fourthposition based on said distance.

Embodiment 330

The method of embodiment 318 wherein the first subset of layoutplacement instances comprises at least a first subgroup of layoutplacement instances and a second subgroup of layout placement instances,and wherein the first layout placement instruction further specifies astep between first subgroup and second subgroup of layout instances.

Embodiment 331

The method of embodiment 318 wherein a second layout placementinstruction following the first layout placement instruction places oneor more layout instances of the plurality of layout instances at one ormore positions starting from a final position of the first layoutplacement instruction.

Embodiment 332

The method of embodiment 307 wherein one or more of the layout placementinstructions comprise conditional statements.

Embodiment 333

The method of embodiment 332 wherein at least one layout placementinstruction determines if a position is occupied.

Embodiment 334

The method of embodiment 333 wherein one or more first layout placementinstructions are executed if the position is occupied.

Embodiment 335

The method of embodiment 333 wherein one or more first layout placementinstructions are executed if the position is not occupied.

Embodiment 336

The method of embodiment 332 wherein at least one layout placementinstruction determines if one or more specified layout instances areincluded in the layout, and wherein one or more first layout placementinstructions are executed if the specified instance is included in thelayout, and wherein one or more second layout placement instructions areexecuted if the one or more specified layout instances are not in thelayout.

Embodiment 337

A computer system for generating a circuit layout comprising: one ormore processors; and a non-transitory computer-readable storage mediumhaving stored thereon computer executable instructions, which whenexecuted by the computer system, cause the computer system to perform amethod comprising: specifying a circuit schematic to be converted tosaid circuit layout; receiving a layout script associated with thecircuit schematic, the layout script configured to position a pluralityof layout instances generated from the circuit schematic; converting thecircuit schematic into the plurality of layout instances; andpositioning the plurality of layout instances based on the layout scriptto produce said circuit layout.

Embodiment 338

A non-transitory computer-readable storage medium having stored thereoncomputer executable instructions, which when executed by a computersystem, cause the computer system to: specify a circuit schematic to beconverted to said circuit layout; receive a layout script associatedwith the circuit schematic, the layout script configured to position aplurality of layout instances generated from the circuit schematic;convert the circuit schematic into the plurality of layout instances;and position the plurality of layout instances based on the layoutscript to produce said circuit layout.

The computer system of embodiment 337 in combination with any one ormore of embodiments 297-336.

The non-transitory computer-readable storage medium of embodiment 338having stored thereon computer executable instructions, which whenexecuted by a computer system, cause the computer system to perform anyone or more of embodiments 297-336.

Embodiment 339

A computer system for generating a circuit layout comprising: means forspecifying a circuit schematic to be converted to said circuit layout;means for receiving a layout script associated with the circuitschematic, the layout script configured to position a plurality oflayout instances generated from the circuit schematic; means forconverting the circuit schematic into the plurality of layout instances;and means for positioning the plurality of layout instances based on thelayout script to produce said circuit layout.

Embodiment 340

A computer-implemented method of generating a circuit layout comprising:receiving, in a layout canvas, a plurality of layout instances generatedfrom a schematic; receiving a layout script associated with theschematic, wherein the layout script comprises a plurality of layoutplacement instructions for placing a plurality of layout instancesgenerated from the schematic; and positioning the plurality of layoutinstances using the plurality of layout placement instructions.

Embodiment 341

A computer system for generating a circuit layout comprising: one ormore processors; and a non-transitory computer-readable storage mediumhaving stored thereon computer executable instructions, which whenexecuted by the computer system, cause the computer system to perform amethod comprising: receiving, in a layout canvas, a plurality of layoutinstances generated from a schematic; receiving a layout scriptassociated with the schematic, wherein the layout script comprises aplurality of layout placement instructions for placing a plurality oflayout instances generated from the schematic; and positioning theplurality of layout instances using the plurality of layout placementinstructions.

Embodiment 342

A non-transitory computer-readable storage medium having stored thereoncomputer executable instructions, which when executed by a computersystem, cause the computer system to: receive, in a layout canvas, aplurality of layout instances generated from a schematic; receive alayout script associated with the schematic, wherein the layout scriptcomprises a plurality of layout placement instructions for placing aplurality of layout instances generated from the schematic; and positionthe plurality of layout instances using the plurality of layoutplacement instructions.

Embodiment 343

A system for generating a circuit layout comprising: means forreceiving, in a layout canvas, a plurality of layout instances generatedfrom a schematic; means for receiving a layout script associated withthe schematic, wherein the layout script comprises a plurality of layoutplacement instructions for placing a plurality of layout instancesgenerated from the schematic; and means for positioning the plurality oflayout instances using the plurality of layout placement instructions.

The above description illustrates various embodiments of the presentdisclosure along with examples of how aspects of the particularembodiments may be implemented. The above examples should not be deemedto be the only embodiments, and are presented to illustrate theflexibility and advantages of the particular embodiments as defined bythe following claims. Based on the above disclosure and the followingclaims, other arrangements, embodiments, implementations and equivalentsmay be employed without departing from the scope of the presentdisclosure as defined by the claims.

1.-11. (canceled)
 12. A computer-implemented method of generating a circuit comprising: receiving, by at least one software system executing on at least one computer, a plurality of circuit specification parameters corresponding to at least one functional circuit component; selecting, by the at least one software system, a plurality of sub-circuit schematics based on the circuit specification parameters; and combining, by the at least one software system, the sub-circuit schematics to form a circuit schematic for the at least one functional circuit component.
 13. The method of claim 12, wherein the at least one functional circuit component is an analog functional circuit component.
 14. The method of claim 12, wherein the sub-circuit schematics comprise analog sub-circuit schematics.
 15. The method of claim 12, wherein the sub-circuit schematics comprise predefined analog sub-circuit schematics.
 16. The method of claim 15, wherein the selected plurality of sub-circuit schematics are a subset of a second plurality of predefined analog sub-circuit schematics.
 17. The method of claim 16, wherein the second plurality of predefined analog sub-circuit schematics correspond to the at least one functional analog circuit component.
 18. The method of claim 16, wherein the plurality of sub-circuit schematics include alternative sub-circuit schematics for performing the same function using different circuitry.
 19. The method of claim 12, the sub-circuit schematics comprising a plurality of analog pins having different electrical characteristics.
 20. The method of claim 19, wherein the different electrical characteristics are different voltage or current operating ranges.
 21. The method of claim 12, said sub-circuit schematics comprising a plurality of pins, said combining comprising mapping the pins of the sub-circuit schematics.
 22. The method of claim 21, wherein one or more pins of said plurality of pins are analog pins.
 23. The method of claim 21, wherein said mapping is based on at least one pin map.
 24. The method of claim 23, wherein different pin maps specify connections between the plurality of sub-circuit schematic pins for different combinations of selected sub-circuit schematics.
 25. The method of claim 23, wherein the at least one pin map is based on the selected sub-circuit schematics.
 26. The method of claim 23, wherein said pin map specifies connections between pins of the sub-circuit schematics.
 27. The method of claim 23, wherein said pin map specifies connections between pins of the sub-circuit schematics and inputs or outputs of the circuit schematic.
 28. The method of claim 23, wherein connected pins have predetermined compatibility.
 29. The method of claim 21, wherein mapping the pins comprises connecting the pins in the circuit schematic.
 30. The method of claim 21, wherein the mapping is done automatically by the at least one software system based on a plurality of predefined rules.
 31. The method of claim 12, wherein different values for the circuit specification parameters generate different analog circuit schematics having different properties for the at least one functional circuit component.
 32. The method of claim 12, wherein different sets of circuit specification parameters for different corresponding functional circuit components have different corresponding sets of predefined sub-circuit schematics.
 33. The method of claim 32, wherein different values for different sets of circuit specification parameters select different subsets of predefined sub-circuit schematics from one of a plurality of sets of predefined sub-circuit schematics corresponding to different functional circuit components.
 34. The method of claim 12, the plurality of circuit specification parameters comprising one or more of: a parameter specifying a physical property or a parameter specifying an electrical property.
 35. The method of claim 12, further comprising generating a netlist specifying the selected sub-circuits.
 36. The method of claim 35, wherein the netlist is a verilog file.
 37. The method of claim 12, wherein the sub-circuit schematics are combined according to a set of rules associated with the at least one functional circuit component to form the circuit schematic for the at least one functional circuit component.
 38. The method of claim 12, wherein different circuit specification parameters corresponding to different functional circuit components are processed using different associated sets of rules for combining different sets of sub-circuit schematics.
 39. The method of claim 12, wherein different functional circuit components have a corresponding unique set of predefined sub-circuit schematics.
 40. The method of claim 39, wherein each unique set of predefined sub-circuit schematics comprises one or more unique predefined analog sub-circuit schematics only used for the corresponding functional circuit component.
 41. The method of claim 39, wherein each unique set of predefined sub-circuit schematics comprises one or more predefined analog sub-circuit schematics used for a plurality of corresponding functional circuit components.
 42. The method of claim 12, the circuit specification parameters comprising variables and corresponding values.
 43. The method of claim 42, wherein the variables and the values are received as text.
 44. The method of claim 12, wherein the circuit specification parameters comprise code specifying properties of the circuit schematic.
 45. The method of claim 44, wherein different values of the code select different sub-circuit schematics.
 46. A computer system for generating a circuit comprising: one or more processors; and a non-transitory computer-readable storage medium having stored thereon computer executable instructions, which when executed by the computer system, cause the computer system to perform a method comprising: receiving, by at least one software system executing on at least one computer, a plurality of circuit specification parameters corresponding to at least one functional circuit component; selecting, by the at least one software system, a plurality of sub-circuit schematics based on the circuit specification parameters; and combining, by the at least one software system, the sub-circuit schematics to form a circuit schematic for the at least one functional circuit component.
 47. A non-transitory computer-readable storage medium having stored thereon computer executable instructions, which when executed by a computer system, cause the computer system to: receive, by at least one software system executing on at least one computer, a plurality of circuit specification parameters corresponding to at least one functional circuit component; select, by the at least one software system, a plurality of sub-circuit schematics based on the circuit specification parameters; and combine, by the at least one software system, the sub-circuit schematics to form a circuit schematic for the at least one functional circuit component.
 48. A system for generating a circuit comprising: means for receiving, by at least one software system executing on at least one computer, a plurality of circuit specification parameters corresponding to at least one functional circuit component; means for selecting, by the at least one software system, a plurality of sub-circuit schematics based on the circuit specification parameters; and means for combining, by the at least one software system, the sub-circuit schematics to form a circuit schematic for the at least one functional circuit component. 49.-344. (canceled) 